ذكرنا في الدرس السابق أن الـ Activity هي عبارة هي عبارة عن الشاشات التي يتم عرضها في أي تطبيق اندرويد يقوم المستخدم بالتعامل معها.
لكل Activity توجد هناك دورة حياة أي بمعنى هي مجموعة من الاحداث التي تمر بها الـ Activity.
فهمت شيء؟؟
أنا ما فهمت شيء!!!
دعني أوضح لك ..
عندما تقوم ببرمجة تطبيق وتثبيته على أي جهاز اندرويد فهناك حالتين:
1-المستخدم يقوم باستخدام تطبيقك.
2-المستخدم لا يقوم حاليا باستخدام تطبيقك.
ففي الحالة الأولى عندما يقوم المستخدم باستخدام تطبيقك فإن شاشة تطبيقك تكون ظاهرة للمستخدم ويقوم بالتفاعل معها.
عندما يقوم المستخدم بالخروج من تطبيقك فإن شاشة تطبيقك لا تكون ظاهرة للمستخدم.
وفي جميع الحالات فان الـ Activity منذ ظهورها على الشاشة إلى اختفائها تمر بدورة حياة Life Cycle ومجموعة من الاحداث تمر عليها.
ولفهم اكثر دورة حياة الـ Activity من خلال الخطوات التالية:
1-نفتح بيئة اندرويد استديو ونقوم بإنشاء مشروع جديد ونسميه ActivitiesLifeCycle إذا كنت لاتعرف كيفية إنشاء مشروع جديد اقراء هذا الدرس.2-في الكلاس MainActivity نقوم بعمل Override لدوال دورة حياة الـActivity.
3-نقوم بطباعة رسالة في LogCatعند تنفيذ الدالة وذلك باستخدام الكلاس Log واستدعاء الدالة d ونقوم بتمرير لها 2بارميتر من نوع String.
1-الأول هو عبارة عن تاغ أو وسم وذلك لفلترة الرسائل المعروضة في LogCat
2-الرسالة المراد عرضها.
كما في الكود ادناه:
Log.d(Tag,"message");
وسيكون شكل الكود بعد تنفيذ الخطوات 2 و 3
بعد ذلك م نقوم بتشغيل بترجمة وتشغيل هذا المشروع ثم نلاحظ التبويب الخاص ب LogCat
وسنلاحظ ما يلي:
1-عند ترجمة و تشغيل البرنامج وظهوره لأول مرة على الشاشة فإنه يتم استدعاء وتنفيذ الدوال التالية:
-()onCreate:تتنفذ عند إنشاء الـ .Activity
-()onStart:تتنفذ قبل ظهور الشاشة للمستخدم.
-()onResume:تتنفذ عندما تظهر الشاشة للمستخدم.
كما في الشكل ادناه
2-عند الضغط على زر الرجوع في الهاتف يتم استدعاء وتنفيذ الدوال التالية كما:
-()onPause :ويتم إستدعائها قبل إختفاء الـActivity من شاشة الهاتف.
-()onStop: ويتم استدعائها عند اختفاء الـActivity لكن تبقى موجودة في الذاكرة RAM.
-()onDestroy:ويتم استدعائها وتنفيذ هذه الدالة عند إنهاء الـ Activity ومسحها من الذاكرة RAM.
4- عند الضغط على زر Home Button يتم استدعاء التالية كما يلي:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package com.blogspot.muteealjabri.activitylifecycle; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { private static final String TAG="mutee"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG,"onCreate"); } @Override protected void onStart(){ super.onStart(); Log.d(TAG,"onStart"); } @Override protected void onResume(){ super.onResume(); Log.d(TAG,"onResume"); } @Override protected void onPause(){ super.onPause(); Log.d(TAG,"onPause"); } @Override protected void onStop(){ super.onStop(); Log.d(TAG,"onStop"); } @Override protected void onRestart(){ super.onRestart(); Log.d(TAG,"onRestart"); } protected void onDestroy(){ super.onDestroy(); Log.d(TAG,"onDestroy"); } } |
بعد ذلك م نقوم بتشغيل بترجمة وتشغيل هذا المشروع ثم نلاحظ التبويب الخاص ب LogCat
وسنلاحظ ما يلي:
1-عند ترجمة و تشغيل البرنامج وظهوره لأول مرة على الشاشة فإنه يتم استدعاء وتنفيذ الدوال التالية:
-()onCreate:تتنفذ عند إنشاء الـ .Activity
-()onStart:تتنفذ قبل ظهور الشاشة للمستخدم.
-()onResume:تتنفذ عندما تظهر الشاشة للمستخدم.
كما في الشكل ادناه
2-عند الضغط على زر الرجوع في الهاتف يتم استدعاء وتنفيذ الدوال التالية كما:
-()onPause :ويتم إستدعائها قبل إختفاء الـActivity من شاشة الهاتف.
-()onStop: ويتم استدعائها عند اختفاء الـActivity لكن تبقى موجودة في الذاكرة RAM.
-()onDestroy:ويتم استدعائها وتنفيذ هذه الدالة عند إنهاء الـ Activity ومسحها من الذاكرة RAM.
3- نقوم بفتح التطبيق مرة أخرى من قائمة التطبيقات ليتم استدعاء الدوال مرة أخرى كمايلي:
لاحظنا هنا لم يتم استدعاء دالة onDestroy وهذا يعني انه موجودة في الذاكرة
أي عند الضغط على زر Home Button فإنه يتم إخفاء الـ Activity وتبقى موجودة بالذاكرة RAM .
5-لكن عند العودة مرة أخرى الى الـ Activity بعد الضغط على زر HomeButton فإنه يتم استدعاء وتنفيذ الدوال التالية:
-لا يتم استدعاء دالة()onCreateمرة أخرى.
-يتم استدعاء دالة()onRestart وهي دالة تتنفذ عند فتح الـ Activity مرة أخرى بشرط أن تكون الـ Activity موجودة في الذاكرة RAM ولم يتم مسحها.
-استدعاء دالة ()onResume وهي دالة تتنفذ عندما تكون الـ Activity ظاهرة للمستخدم.
ملاحظة:
عند تغيير اتجاه دوران الشاشة يتم تنفيذ دوال دورة حياة الـ Activity مرة اخرى.
وهنا نكون قد انتهينا من شرح هذا الدرس .. ولتحميل هذا الدرس يرجى الضغط هنا
وهنا نكون قد انتهينا من شرح هذا الدرس .. ولتحميل هذا الدرس يرجى الضغط هنا