السلام عليكم..سنتعلم في هذا الدرس كيفية حفظ حالة الـ Activity .
لكي تكون مبرمج ينتج برامج قوية يجب أن يشعر المستخدم بالارتياح عند استخدام برنامجك غير ذلك سيقوم المستخدم بحذف برنامجك وعدم استخدامه مرة أخرى.
وسنتعلم في هذا الدرس مايلي:
1-ماذا يقصد بالحالة stateActivity؟
2-كيفية حفظ حالة الاكتفتي Activity State؟
3-مثال تطبيقي على كيفية حفظ واسترجاع البيانات.
1-ماذا يقصد بحالة
الاكتفتي Activity State ؟
يقصد بحالة الاكتفتي Activity State هي الحالة التي تكون عليها الشاشة كمثال اتجاه دورانها .
وذلك أن بعد دراسة أن تغيير اتجاه دوران الشاشة يقوم بتدميرها وإنهائها من الذاكرة وإعادة إنشائها مرة أخرى وبذلك تفقد الـ acivity الحالة السابقة التي كانت عليها, لو فرضنا انك قمت ببرمجة يحتوي على شاشة يقوم المستخدم بإدخال بيانات فيها .
فجاة قام المستخدم بتدوير الشاشة سيتم حذف تلك البيانات التي كان يقوم بادخالها وذلك بسبب انه عند تغيير اتجاه دورانها يتم تنفيذ دوال دورة حياة الاكتفتي Activity Life Cycle وبذلك يتم فقد البيانات كما في الصورة ادناه:
نلاحظ من الصورة أعلاه انه تم فقد النص Welevom وذلك عند تغيير اتجاه
دوران الشاشة.
فما هو شعورك كمستخدم ..؟ طبعا ستقوم بحذف التطبيق.
2-كيفية حفظ حالة الاكتفتي Activity State؟
ويتم ذلك باستخدام باستخدام دالتين:
والان بعد أن عرفنا الدالتين سنذكر بعض الملاحظات:
1-كلا الدالتين تستخدمان لحفظ واسترجاع البيانات الموقتة اثناء تشغيل التطبيق كمثال : قيم متغيرات.
2-عند الضغط على زر الرجوع يتم استدعاء الدالة finish وذلك لانهاء هذه الشاشة ولايتم حفظ أي بيانات .
3-يتم حفظ البيانات في اوبجكت من نوع Bundle وهو عبارة Data Structure للاندرويد يستخدم لحفظ البيانات على شكل (key/value) ويتم استرجاع البيانات بواسطة المفتاح,, حيث يتم تخزين البيانات في اوبجكت من نوع bundle بالطريقة الاتية:-
لتخزين البيانات نستخدك الداول putString لتخزين قيمة نصية أو putInt لتخزين قيمة عدد صحيح الخ ..
كمافي الكود ادناه:
1 2 3 | Bundle bundle = new Bundle(); bundle.putString("ID","7823687"); bundle.putInt("ID",765) |
والاسترجاع البيانات نستخدم داول مثل getString لاسترجاع قيمة نصية أو getInt لاسترجاع قيمة عدد صحيح كمافي الكود ادناه: .
1 2 3 | Bundle bundle = new Bundle(); String id =bundle.getString("ID","7823687"); int num =bundle.getInt("ID",765) |
3-مثال تطبيقي على كيفية حفظ واسترجاع البيانات.
كماذكرنا عندما نريد حفظ حالة الـ Activity نستخدم الدالة onSaveInstanceState كما في
الكود ادناه:
1 2 3 4 5 6 | @Override publicvoidonSaveInstanceState(BundleoutState){ super.onSaveInstanceState(outState); outState.putString(“ID”,“1234567890”); } |
والان ناتي لشرح الكود :
الاسطر 1-3 :تعريف الدالة واستدعاء الدالة في الكلاس الاب وذلك عبر
الكلمة المفتاحية super.
السطر4: تخزين قيمة نصية
"12344" بواسطة المفتاح Id.
1 2 3 4 5 | @Override publicvoidonRestoreInstanceState(BundlesavedInstanceState){ super.onRestoreInstanceState(savedInstanceState); String ID=savedInstanceState.getString(“ID”); } |
الاسطر 1-3 :تعريف الدالة واستدعاء الدالة في الكلاس الاب وذلك عبر
الكلمة المفتاحية super.
السطر4:استرجاع القيمة النصية "12344" التي قمنا بحفظها
بواسطة المفتاح Id وتخزينها
في المتغير النصي ID.