الجمعة، 2 أبريل 2010

دورة حياة ال MIDlet

في هذا الموضوع سوف نتعرف على دوره حياه تطبيقات ال MIDlets. ما يجب ان نعرفه ان تطبيقات الموبايل تختلف عن تطبيقات الجافا الاعتياديه فنحن نعلم ان كل برامج الجافا يجب ان تحتوي على Main Class وهو Class يحتوي على main method التي يبدأ منها البرنامح بالتنفيذ.



Class SomeClass {
public static void main(String args[] ) {
// init application here
}
}


ولكن الوضع مختلف في تطبيقات الموبايل حيث لا وجود لل main method واستبدلت بثلاث methods رئيسه تمثل ثلاث حالات يمكن ان تكون بها ال MIDlet الا وهي:
  1. paused
  2. active
  3. destroyed
يتحكم في دوره حياه ال MIDlet برنامج يوجد على الهاتف يسمى
Application Management Stystem أو اختصارا بال AMS فهو الذي ينشئ ال MIDlet استجابه لطلب المستخدم بتنفيذ البرنامج وهو الذي ينقلها لحاله ال paused استجابه لوقوع حدث معين مثل استقبال مكالمه هاتفيه او انطلاق المنبه. الان سوف نحاول فهم دورة حياه ال MIDlet والحالات التي يمكن ان تمر بها.


عندما يقوم المستخدم بطلب تشغيل تطبيق ال MIDlet سوف يقوم ال AMS بنقل ال MIDlet من حالة الموت الى الحاله active وذلك يتم عن طريق استدعاء startApp() method من داخل ال MIDlet وبذلك تكون ال MIDlet قد بدأت بالعمل. الان اذا امر المستخدم البرنامج بالانتهاء فانه سوف يتم استدعاء destroyApp() method وبعدها سوف تنتقل ال MIDlet الى حالة destroyed وبذلك لن يمكنك العوده الى البرنامج الا عن طريق اعادة تشغيله مرة اخرى عبر المرور ب ()startApp. اخر حالة وهي عندما يكون التطبيق في حاله active فانه يمكن ان يحدث حدث خارجي مثل استقبال مكالمه مما يضطر ال AMS الى نقل ال MIDlet الى الحالة paused عن طريق استدعاء pauseApp() method ليتمكن المستخدم من الرد على المكالمة وبعدها يمكنه العودة للبرنامج عن طريق نقل ال MIDlet مره أخرى من حالة paused الى حالة active عن طريق استدعاء ()startApp مره اخرى.

لذلك فان تطبيقات ال MIDP يجب ان تحتوي على الاقل على MIDlet واحده وهي عباره عن class يورث من ال MIDlet class ويحتوي على هذه الثلاثة methods كالتالي:




public class Application extends MIDlet {
public Application() { }

// Called when the MIDlet is created or re-started
public void startApp() { }

// Called to pause the MIDlet
public void pauseApp() { }

// Called to terminate the MIDlet
public void destroyApp(boolean unconditional)
{ }
}

ليست هناك تعليقات:

إرسال تعليق