activity lifecycle

activity lifecycle

چرخه حیات Activity در زامارین

OnStop

این متد زمانی فراخوانی می شود که activity دیگر برای کاربر قابل مشاهده نیست و زمانی اتفاق می افتد که یکی از اتفاقات زیر روی دهد:
1- activity جدید آغاز شده باشد و تحت پوشش قرار بگیرد
2- activity های موجود که به پیش زمینه آورده می شوند
3- activity ها destroy شوند
OnStop معمولا در وضعیت low-memory فراخوانی نمی شود مانند زمانی که اندروید برای کمبود منبع دارد و نمی تواند به درستی activity را در بک گراند اجرا کند. برای حل این مشکل بهتر است در زمان destroy شدن activity به فراخوانی شدن OnStop وابسته نباشیم. متدی که بعد از OnStop فراخوانی می شود در صورتی که در حال destroy شدن باشد متد OnDestroy است و در صورتی که activity در حال تعامل با کاربر باشد متد OnRestart فراخوانی می شود.

OnDestroy

این متد آخرین متدی است که تا قبل از destroy شدن و حذف شدن activity از حافظه فراخوانی می شود. در زمان های خاص ممکن است پردازش اپلیکیشنی را که activity روی آن هاست شده است را kill کند که منجر به فراخوانی OnDestroy
می شود. بسیاری از activityها این متد را پیاده سازی نمی کنند به این دلیل که اغلب clean up و shut down در متدهای OnPause و OnStop انجام می شود. متد OnDestroy معمولا در منابع طولانی در حال اجرای clean up که ممکن است منابع در آن هدر روند override می شود. مثالی که برای این حالت در نظر گرفته می شود ممکن است تردهای بک گراند که با متد OnCreate شروع شده اند باشد.
هیچ چرخه حیاتی بعد از فراخوانی این متد وجود ندارد

OnRestart

این متد بعد از توقف activity برای شروع مجددا فراخوانی می شود. مثال خوبی که برای این مورد می توان نام برد این است که زمانی که activity روی اپلیکیشن فعال است کاربر دکمه خانه را فشار دهد. زمانی که این اتفاق میفتد متدهای OnPause و پس از آن OnStop فراخوانی می شوند و activity به پس زمینه انتقال پیدا می کند اما destroy نمی شود. اگر کاربر اپلیکیشن را با task manager یا اپلیکیشن های مشابه restore کند، اندروید متد OnRestart را فراخوانی می کند.
راهنمای عمومی برای این که مشخص کند بر اساس چه منطقی OnRestart باید پیاده سازی شود وجود ندارد و دلیل آن این است که OnStart همیشه صرف نظر از اینکه چه activityای ایجاد یا ریست شده است invoke می شود بنابراین هر منبعی که activity به آن نیاز دارد باید به جای OnRestart در OnStart مقداردهی شود.
متدی که در چرخه حیات بعد از OnRestart فراخوانی می شود OnStart است.

دکمه Back و Home

بسیاری از دستگاه های اندروید 2 دکمه مجزا دارند: دکمه Back و دکمه Home. نمونه این دکمه در شکل زیر در اندروید 4.0.3 نشان داده می شود:

اندروید 4.0.3

فرق نامحسوسی بین این 2 دکمه وجود دارد اما به نظر می رسد که اثر مشابهی در قرار دادن اپلیکیشن در بک گراند دارد. زمانی که کاربر روی دکمه Back کلیک می کند، به اندروید اعلام می شود که activity انجام شده است و اندروید activity را destroy می کند. در مقابل زمانی که کاربر روی دکمه Home کلیک می کند activity صرفا به بک گراند انتقال پیدا می کند و اندروید آن را kill نمی کند.

مدیریت حالت در چرخه حیات

زمانی که activity متوقف یا destroy می شود، سیستم فرصتی برای ذخیره حالت activity پیدا می کند. این حالت ذخیره شده به عنوان حالت نمونه مورد مراجعه قرار می گیرد. اندروید 3 گزینه برای ذخیره حالت نمونه در چرخه حیات activity در نظر می گیرد:
1- ذخیره سازی مقادیر اولیه در یک Dictionary شناخته شده به عنوان یک Bundle برای ذخیره حالت که اندروید از آن استفاده خواهد کرد.
2- ایجاد یک کلاس سفارشی که مقادیر پیچیده مانند بیت مپ را نگه می دارد. اندروید از این کلاس سفارشی برای ذخیره حالت استفاده می کند.
3- دور زدن پیکربندی چرخه حیات را تغییر می دهد و مسئولیت کامل حفظ حالت را در activity به عهده می گیرد.

در ادامه این مقاله در مورد 2 حالت اول توضیح داده خواهد شد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

20 − = 13