اندرويد للمبتدئين 4-Activity Life Cycle

كل Activity  عندي في التطبيق بيكون ليها دوره معينه بتمشي فيها زي مثلا متي تشتغل ومتي تقف وهكذا والشكل الاتي يوضح



بشكل عام الذي يتحكم في دوره ال Activity  هو النظام نفسه مثلا لو انت شغال علي Activity  معينه النظام يعطيها اعلي اولويه وبيحاول يوفرلها كل شئ يساعدها في انها تشتغل باكمل وجه يعني انت لو بتلعب لعبه بيحاول يغلق تطبيقات تانيه علشان يوفرلك مكان في ال memory يسع للعبه دي وعند الانتقال الي Activity اخري تاخذ هذه الActivity الاولويه القصوي وتاخذ ال Activity السابقه اولويه اقل لدرجه انه ممكن يقفلها لانه احتاج مكان في الmemory لشئ اعلي منها اولويه 

زي ما عرفنا قبل كده ان الDVK بينشئ object لكل عمليه او تطبيق فالبتالي كل عمليه داخل ال memory مستقله بذاتها وبكه النظام قادر علي ان يحدد اي عمليه لها اولويه اعلي في التشغيل والمصادر 

عند بدء التطبيق بتشتغل معاه onCreate  وتبدأ تجهز الواجهة للمستخدم وربط عناصر التطبيق بعضها ببعض يتبعها في الحال onStart وكما موضح من الصوره انه من الممكن ان onStart تشتغل من غير onCreate في حاله ان الActivity وقفت ولكن لم يتم غلقها ومحتاج انك ترجعلها تاني كل ها ولم يتفاعل المستخدم مع ال Activity  ولكنه يبدء التفاعل عند بدء onResume في العمل  

في حاله ان قرر المستخدم الانتقال ل Activity جديده تبدء onPause في العمل وهنا توجد حالتين 
الاولي اما انه يريد العوده لل Activity السابقه فيبدء في تشغيلها من اول onResume 
والثانيه انه خلاص مش هيشتغل تاني عليها وبيروح ل onStop  
والثالثه انه فكر ورجع فتح الActivity الاولي فهيرجع ويبدأ من اول onRestart 
واخر حاجه خالص ان المستخدم مش محتاج الActivity  او النظام قرر يقفلها لوجود ما هو اعلي منها اولويه فبتشتغل onDestroy 

انت كمبرمج مش محتاج تعرف سيناريو كل Activity وتمش وتتعامل معاه لانك بتكون عارف مثلا ان onCreate  هي اللي لازم اضع فيها كل شئ محتاجه قبل ما الActivity تظهر ويبدأ المستخدم يتعامل معاها زي انك تربط عناصر الواجهة بالكود  وهكذا وزي onPause  انت انت عارف انك محتاج تحفظ البيانات فيها لانك مش ضامن انك اصلا هترجع لل Activity دي تاني ولا لا 




 Log

يستخدم ال log لعمل شئ اسمه تتبع الكود code trace  كنا في الجافا بنعمل قبل كل سطر شاكين فيه او مكان عايز مثلا اعرف ايه اللي خصل زي مثلا لما عملنا كود للتعامل مع ال data base وال data لم تحفظ او كنت تريد الاتصال بالانترنت ولم يتصل والبرنامج لم يخرج errors  كنا نضع  جمله قيل كل شئ لطباعتها لنتاكد انه وصل للسطر ده وان لم يطبعها فانه لم يصل الي هذا السطر
System.out.printl("start of connection");f
System.out.printl("end of connection");f
System.out.printl(" connecting");f
في اندروبد استبدلوها بclass اسمه log  وتظهر في شاشة ال  LogCat
فبدلا من ان نكتب System.out.printl("start of connection");f 
نكتب Log.v("tag name","message to appear");f

ولكي نوضح دورة ال Activity هنعمل برنامج بسيط وهنستخدم ال Log  وحاجه اسمها Toast  ودي عباره عن رساله بتظهرلك والبرنامج شغال وتكتب بهذا الشكل
Toast.makeText(class name.this, "any message", Toast.LENGTH_LONG).show();n

هننشئ تطبيق كما عرفنا من قبل وهنسميه  Life Cycle
ونشغل البرنامج هتبدي تظهرلنا الرساله بالترتيب onCreate, onStart,onResume
واول كا تضغط رجوع او تذهب وتفتح تطبيق اخر تبدأ onPause , onStop ,onDestroy

ود ظهور ال Log

Previous
Next Post »