يمثل النشاط جزءاً أساسية من التطبيق حيث يتضمن الواجهات الرسومية بالإضافة إلى البرمجة اللازمة للتحكم بتلك الواجهات. وسوف نتعرف على دور حياة النشاط (كيف يبدأ، وكيف يعمل، ومتى ينتهي) في تطبيقات الأندرويد.
نظرة عامة:
يتألف التطبيق من نشاطات مختلفة تتصل فيما بينها بالقادح أو الزناد (Intent). عندما يتم الإنتقال من نشاط إلى آخر يقوم الأندرويد بوضع النشاط السابقة في متراصّة (Stack) شبيهة بوظيفة "الرجوع" في متصفحات الأنترنت. عند الضغط على زر الخلف في الأجهزة التي تعمل بالأندرويد يقوم الأندرويد بإرجاعك إلى النشاط السابق. هذه النقطة مهمة في معرفة دورة حياة التطبيق (Activity Life-cycle).
نظرة أقرب:
الصورة التالية تمثل رسماً يوضح حياة النشاط منذ بدايته مروراً بعرضه للمستخدم وحتى انتهائه.
هناك ثلاثة دورات في هذه الصورة:
الدورة الكاملة لحياة التطبيق Entire Lifetime، وهي التي تحصل بين onCreate(Bundle) وبين onDestroy(). يمكن القيام بتجهيز المتغيرات والكائنات في دالة onCreate() وإنهاؤها في onDestory().
الدورة المنظورة Visible Lifetime، وهي التي تكون في هذه الدورة يمكن للمستخدم أن يرى النشاط وربما يكون النشاط في الخلفية وليس في الواجهة أي لا يمكن التفاعل معه. فمثلاً عندما تظهر رسالة تحذير للمستخدم يكون النشاط مرئياً ولكن في الخلفية لتكون رسالة التحذير في الأمام. تكون هذه الدورة بين onStart() وبين onStop(). وفي هاتين الدالتين يمكن التحكم بما سوف يعرض للمستخدم في النشاط. يتم استدعاء هاتين الدالتين أكثر من مرة (في حالة تم الانتقال من نشاط أ إلى ب ومن ثم العودة إلى أ).
الدورة الأمامية Foreground Lifetime. هذه الدورة تكون بين الدالتين onResume() وonPause() ويمكن للمستخدم التفاعل مع النشاط بشكل طبيعي. يستعمل النشاط هاتين الدالتين بكثرة (كأن يدخل الجهاز وضع الاستعداد) ولذلك يجب مراعاة هذا الأمر عند إضافة أوامر لهاتين الدالتين في النشاط.
وبشكل عام يتألف النشاط من هذه الدوال، والتي يمكن استعمالها في كلاس فرعي تابع للكلاس Activity وكتابة ما تريد من أوامر:
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}لتوضيح الدوال بشكل أكثر: http://www.tech-scraps.com/2012/02/activity-lifecycle/ (لم استطع وضع الجدول هنا).
أتمنى أن تكون هذه الحلقة مفيدة، وأرجو سماع آرائكم وتعليقاتكم.
