تبلیغات متنی
آزمون علوم پایه دامپزشکی
ماسک سه لایه
خرید از چین
انجام پروژه متلب
حمل خرده بار به عراق
چت روم
Bitmain antminer ks3
چاپ ساک دستی پلاستیکی
برتر سرویس
لوله بازکنی در کرج
آموزش داده ها و اطلاعات ذخیره شده از آبجکت activity جهت بازگردانی activity به وضعیت قبلی/ Activity i

برنامه نویسی اسان

برنامه نویسی اسان

آموزش داده ها و اطلاعات ذخیره شده از آبجکت activity جهت بازگردانی activity به وضعیت قبلی/ Activity i

هنگامی تنظیمات دستگاه تغییر می کند، مثلا وضعیت و جهت نمایش تغییر می یابد، activity برای اینکه متناسب با تنظیمات جدید نمایش داده شود، باید مقادیر و منابع متفاوتی را بخواند و از اینرو از نو ساخته می شود (ابتدا متد onDestroy()صدا خورده و بلافاصله متد onCreate() فراخوانی می شود). حال به منظور اینکه سیستم اندروید بتواند activity را با تنظیمات جدید، اما وضعیت قبلی بازگردانی کند، ناچار نمونه ای از آن کلاس را ذخیره می کند. سپس بر اساس داده های ذخیره شده، activity را به حالت قبلی بازمی گرداند. Instance state در واقع داده های موقتی و غیر ماندگار هستند که باید در بازه ی زمانی تغییر بین دو وضعیت نمایش (برای مثال بخاطر تغییر در تنظیمات دستگاه) بین activity ها (نمونه ی ذخیره شده از activity و نمونه ی مجدد ایجاد شده) پاس داده شود تا اطلاعات و انتخاب های کاربر (اینک با تنظیمات جدید) به حالت قبل بازگردانی شود. این اپلیکیشن است که وظیفه ی بازگردانی خود به حالت قبلی را دارد.
Instance state معمولا جفت های کلید-مقدار هستند که از activity خاتمه یافته، در آبجکت Bundle ذخیره می شوند و جهت بازگردانی وضعیت activity به حالت قبلی (وضعیتی که کاربر در آن اپلیکیشن را ترک کرد) مورد استفاده قرار می گیرند.
سناریویی را در نظر بگیرید که کاربر با نوار پیمایش به پایین یک لیست می رود (ListView) که در آن هزاران آیتم وجود دارد و در این میان activity حذف و مجددا ساخته می شود. طبیعتا کاربر دوست ندارد موقعیت جاری خود را در این لیست بسیار بزرگ از دست بدهد و دوباره مجبور به پیدا کردن آن شود. از اینرو موقعیت جاری کاربر باید حفظ شده و پس از ایجاد activity دوباره کاربر به آن بازگردانده شود.
برای این منظور متد onSaveInstanceState() صدا خورده شده و وضعیت نمونه را در قالب یک آبجکت Bundle در خود ذخیره می کند. آبجکت Bundle می تواند انواع داده ی اولیه، آرایه، رشته/String و Object هایی از جنس Parcelable و Serialisable را در خود ذخیره کند.
داده های ذخیره شده در کلاس Bundle، در زمان راه اندازی مجدد activity مورد نظر به عنوان پارامتر به متدهای onCreate() و onRestoreInstanceState() ارسال می شوند.
در صورت بازنویسی (override) پیاده سازی توابع onSaveInstanceState() و onRestoreInstanceState()، لازم است پیاده سازی کلاس پدر (super implementation) را نیز فراخوانی نمایید زیرا view های پیش فرض اندروید داده های خود را به واسطه ی فراخوانی View.onSaveInstanceState از متد onSaveInstanceState() ذخیره می کنند. برای مثال، EditText محتوای خود را از طریق فراخوانی پیش فرض این متد ذخیره می کند.
با استفاده از دو تابع onRestoreInstanceState() و onCreate() می توانید instance state یک activity را (در صورتی که activity نابود شده و مجددا ساخته شد) بازسازی نمایید.

موضوع :
برچسب ها : ,
امتیاز : 3 | نظر شما : 1 2 3 4 5 6
+ نوشته شده در شنبه 11 آبان 1398ساعت 19:42 توسط قاسم | تعداد بازديد : 48 | |