كل 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
فبدلا من ان نكتب System.out.printl("start of connection");f
نكتب Log.v("tag name","message to appear");f
ولكي نوضح دورة ال Activity هنعمل برنامج بسيط وهنستخدم ال Log وحاجه اسمها Toast ودي عباره عن رساله بتظهرلك والبرنامج شغال وتكتب بهذا الشكل
هننشئ تطبيق كما عرفنا من قبل وهنسميه Life Cycle
ونشغل البرنامج هتبدي تظهرلنا الرساله بالترتيب onCreate, onStart,onResume
واول كا تضغط رجوع او تذهب وتفتح تطبيق اخر تبدأ onPause , onStop ,onDestroy
ود ظهور ال Log
بشكل عام الذي يتحكم في دوره ال 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
EmoticonEmoticon