آموزش جلوگيري از نابود و مجدد ايجاد شدن activity بر اثر تغيير در تنظيمات و وضعيت برنامه
همان طور كه در بالا ذكر شد، activity بر اثر تغيير در تنظيمات و وضعيت دستگاه (config change) از بين رفته و جهت تطبيق با تنظيمات جديد و همچنين بارگذاري resource هاي جديد، دوباره ساخته مي شود.
تغيير در تنظيمات ممكن است به دنبال يك event كه از خود دستگاه اندرويد اعلان يا صادر مي شود و مربوط به برنامه ي جاري مي باشد، اتفاق بيافتد.
اطلاعات مربوط به تنظيمات جاري دستگاه در نمونه اي از كلاس Configuration ذخيره مي شود. در واقع Configuration يك كلاس است كه تمامي اطلاعات مربوط به تنظيمات جاري دستگاه را تعريف مي كند و اين اطلاعات مي توانند منابع و محتواي مورد نياز اپليكيشن را تحت تاثير قرار دهند. كلاس مزبور هم مي تواند تنظيمات تعريف شده توسط كاربر (همچون locale list و scaling = مقياس بندي به صورت پويا) را شامل شود و هم تنظيمات دستگاه نظير حالت دريافت ورودي (input mode)، اندازه ي صفحه يا وضعيت و جهت نمايش.
به عنوان مثال زماني كه كاربر با چرخاندن دستگاه، وضعيت نمايش و چيدمان را تغيير مي دهد (از نماي عمودي به افقي تغيير مي دهد)، در اين هنگام سيستم اندرويد متوجه مي شود كه activity جهت تطبيق با شرايط جاري، لازم به بارگذاري منابع جديد دارد. از اينرو activity كنوني را نابود كرده و بار ديگر با تنظيمات جديد آن راه اندازي مي كند.
هنگامي كه activity نابود و مجدد ساخته مي شود، برنامه نويس مي بايست اطمينان حاصل كند كه نمونه ي جديد activity با اطلاعات مربوط به وضعيت قبلي ايجاد و بارگذاري شود. سيستم اندرويد ابزار و روش هاي مختلفي براي اين منظور ارائه مي دهد. در محيطemulator مي توانيد با فشردن كليدهاي Ctrk+F11 به راحتي تغيير در وضعيت و جهت نمايش را شبيه سازي نماييد.
مي توانيد activity را طوري در فايل XML تعريف كنيد كه نسبت به برخي از تغييرات در وضعيت و تنظيمات بي تفاوت باشد و به تبع از راه اندازي مجدد activity در موارد مزبور جلوگيري نماييد. كافي است در فايل تنظيمات AndroidManifest.xml خود، داخل تگ activity، خصيصه (attribute) configChanges را با مقدار مربوطه تنظيم نماييد.
Activity زير طوري تنظيم شده كه در صورت رخداد تغيير در وضعيت نمايش يا موقعيت صفحه كليد (قابل مشاهده/پنهان)، از نو راه اندازي نشود و به بياني ديگر نسبت به اين تغييرات بي تفاوت باشد.
برچسب: ،