16 – اندرويد دورة حياة الفعالية – التوقف المؤقت للفعالية ومن ثم متابعة تشغيلها Pausing and Resuming an Activity

ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development

اندرويد : التوقف المؤقت للفعالية ومن ثم متابعة تشغيلها Pausing and Resuming an Activity 

السلام عليكم ورحمة الله وبركاته

سوف نتعلم ضمن هذا الدرس مايلي :07f029b1700b757f9d14728514ccfb7c

  • الايقاف المؤقت للفعالية Pause Your Activity
  • متابعة عمل الفعالية Resume Your Activity

الايقاف المؤقت ومتابعة عمل الفعالية Pausing and Resuming an Activity

خلال الاستخدام العادي للتطبيق , قد يغيّب التطبيق الحالي المستعمل في المقدمة من قبل بعض المكونات المرئية والتي تسبب الإيقاف المؤقت للتطبيق Pause.

على سبيل المثال, عندما تفتح احد الفعاليات الشبه شفافة (مثل احد ستايلات صناديق الحوار), في هذه الحالة تتوقف الفعالية السابقة بشكل مؤقت.

مادامت الفعالية لا تزال غير مرئية ولو بشكل جزئي,ولا يكون التركيز focus عليها بشكل كامل, فإنها تبقى في حالة التوقف المؤقتpause .

على كل الاحوال, عندما تكون الفعالية غير مرئية بشكل كامل, عندها تتوقف(وهذا ما سيتم مناقشته ضمن الدرس القادم).

ما إن تدخل فعاليتك حالة التوقف المؤقت, حتى يستدعي النظام التابع onPause() على فعاليتك, والذي يمكنك من ايقاف الاحداث الجارية ضمن فعاليتك والتي لا يتوجب ان تستمر بالعمل في حالة التوقف المؤقت pause(على سبيل المثال الفيديو) او حفظ اي معلومات قد يحتاجها المستخدم. في حال عاد المستخدم إلى فعاليتك من حالة التوقف المؤقت, عندها يتابع النظام الفعالية ويستدعي التابع onResume().

ملاحظة: عندما تتلقى الفعالية استدعاء التابع onPause(), قد تكون تلك اشارة إلى ان الفعالية قد تتوقف بشكل مؤقت لما يقارب اللحظة وقد يعود المستخدم إلى الفعالية.على كل الاحوال, فإن هذا يمثل بالعادة المؤشر الأول إلى ان المستخدم سوف يغادر الفعالية.

 

الشكل 1 : عندما تحجب فعالية شبه شفافة فعالتك, يقوم النظام عندها باستدعاء التابع onPause()  وتنتظر الفعالية في حالة التوقف المؤقت Paused state(1).في حال عاد المستخدم إلى الفعالية وهي في حالة التوقف المؤقت , يستدعي النظام عندها التابع onResume() (2).

الشكل 1 : عندما تحجب فعالية شبه شفافة فعالتك, يقوم النظام عندها باستدعاء التابع onPause() وتنتظر الفعالية في حالة التوقف المؤقت Paused state(1).في حال عاد المستخدم إلى الفعالية وهي في حالة التوقف المؤقت , يستدعي النظام عندها التابع onResume() (2).

التوقيف المؤقت لفعاليتك Pause Your Activity

عندما يستدعي النظام التابع onPause() على فعاليتك,فهذا بشكل تقني يعني بأن فعاليتك لا تزال مرئية بشكل جزئي, ولكنه في معظم الاحيان عبارة عن اشارة إلى ان المستخدم سوف يغادر فعاليتك وسوف تدخل فعاليتك في القريب العاجل حالة التوقف التام Stopped state.

بشكل عام يتوجب عليك استخدام استدعاء التابع onPause() للامور التالية :

  • لايقاف الرسوم المتحركة والاحداث الجارية التي قد تستهلك المعالجCPU .
  • تاكيد وتنفيذ التغيرات الغير محفوظة, ولكن ذلك فقط في حال كان المستخدم يتوقع ان تكون مثل هذه التغيرات تغيرات دائمة يتم حفظها عندما يغادر(كأن يوضع ايميل ضمن ال draft).
  • تحرير موارد النظام, مثل مستقبلات البث broadcast receivers, التعامل مع ادوات الاستشعار (مثل GPS), او اي موارد قد تاثر على عمر حياة البطارية أو اي موارد اخرى لا يحتاج إليها المستخدم اثناء التوقف المؤقت للفعالية.

على سبيل المثال, في حال كان تطبيقك يستخدم كاميرا, عندها فإن التابع onPause() يمثل المكان المناسب لتحريرها.

@Overridepublic void onPause() {super.onPause();  // Always call the superclass method first

// Release the Camera because we don’t need it when paused

// and other activities might need to use it.

if (mCamera != null) {

mCamera.release()

mCamera = null;

}

}

بشكل عام, لا يتوجب عليك استخدام التابع onPause()  لحفظ تغيرات المستخدم(مثل المعلومات الشخصية التي تم ادخالها ضمن فورم معين) ضمن التخزين الدائم.

وانما السبب الوحيد الذي يجعلك تخزن معلومات المستخدم الشخصية بشكل دائم ضمن التابع onPause() , هو إذا كان المستخدم يتوقع من فعاليتك ان تقوم بهذا الحفظ للمعلومات (كمثال : حالة رمي المستخدم لاحد الايميلات ضمن ال draft).

على كل الاحوال, يتوجب عليك تجنب انجاز المهام التي تستهلك المعالج CPU بشكل مكثف من خلال onPause(), مثل عملية الكتابة في قاعدة المعطيات, وذلك لأنها قد تبطأ عملية النقل المرئي إلى الفعالية التالية.

يتوجب عليك ان تحافظ على ان تكون كمية العمليات المنفذة من خلال التابع onPause() بسيطة وقليلة قدر الامكان لكي تسمح للانتقالات السريعة التي تنقل المستخدم إلى وجهته التالية ان تتم بشكل سريع, وذلك في حال تم ايقاف فعاليتك بشكل دائم.

ملاحظة : عندما يتم ايقاف فعاليتك بشكل مؤقت, فإن مستنسخ الفعالية Activity instance يبقى في الذاكرة ويتم استدعائه مجددا عندما تتم متابعة الفعالية. لا يتوجب عليك اعادة تهيئة المكونات التي تم انشائها خلال اي تابع من التوابع اللواتي يقدننا إلى حالة الاستمرار Resumed state.

متابعة فعاليتك Resume Your Activity

عندما يتابع المستخدم فعاليتك من حالة التوقف المؤقت, يستدعي النظام عندها تابع onResume().

يجب ان تتنبه إلى ان النظام يستدعي هذا التابع في كل مرة تعود فيها فعاليتك إلى المقدمة , بما في ذلك الحالة التي يتم فيها انشاء الفعالية لأول مرة. وعلى هذا النحو, يتوجب عليك ان تنجز implement  التابع onResume() بحيث يقوم بتهيئة المكونات التي قمت بتحريرها اثناء استدعاء onPause() وينجز اي عملية تهيئة اخرى مطلوب منها ان تحدث في كل مرة عند دخول الفعالية إلى مرحلة المتابعة (مثل بدء الرسوم المتحركة وتهيئة المكونات المستخدمة عند امتلاك الفعالية لتركيز المستخدم user focus).

المثال التالي حول التابع onResume(), يمثل متابعة المثال المطروح سابقا حول التابع onPause(), لذالك فهو يقوم بتهيئة الكاميرا التي تم تحريرها عندما تم ايقاف الفعالية بشكل مؤقت.

@Overridepublic void onResume() {super.onResume();  // Always call the superclass method first

// Get the Camera instance as the activity achieves full user focus

if (mCamera == null) {

initializeCamera(); // Local method to handle camera init

}

}

 وبهذا نكون قد غطينا الامور الاساسية والهامة حول التوقف المؤقت ومتابعة عمل الفعالية.

إلى ان القاكم في الحلقة القادمة التي تتحدث حول  “ايقاف واعادة تشغيل الفعالية” استودعكم الله والسلام عليكم ورحمة الله وبركاته.

الترجمة

المصطلح

فعالية

Activity

تابع أو وظيفة

method

استدعاء

Callback or call

تنجيز ( اي كتابة الكود البرمجي اللازم)

Implements

رماز أو كود

Code

تطبيق

Application

مشغّل

Launcher

Advertisements

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

  1. أضف تعليق

اترك رد

Please log in using one of these methods to post your comment:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: