activity lifecycle

activity lifecycle

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

ایجاد مجدد Activity در پاسخ به تغییرات پیکربندی

برای این که مسائل پیچیده تر شوند اندروید تغییرات پیکربندی را نیز اضافه کرده است. تغییرات پیکربندی چرخه ایجاد مجدد/تخریب activity را سریع می کند و زمانی اتفاق می افتد که پیکربندی activity تغییر کند مانند زمانی که دستگاه چرخانده می شود ( و activity نیاز به rebuild شدن در حالت landscape یا portrait دارد) یا زمانی که کیبورد نمایش داده می شود ( و activity با فرصتی برای تغییر سایز نمایش داده می شود).
تغییرات پیکربندی هنوز هم دلیل تغییر حالت activity است که در زمان توقف یا ریست activity رخ می دهد. با این حال برای اطمینان از اینکه اپلیکیشن responsive باشد و در طول تغییرات پیکربندی به خوبی انجام شود، مهم است که با بیشترین سرعت ممکن به کار گرفته شود. به این دلیل، اندروید دارای یک API خاص است که می تواند برای عدم تغییر حالت در طول تغییرات پیکربندی مورد استفاده قرار گیرد.

متدهای چرخه حیات
SDK اندروید و در توسعه فریم ورک Xamarin.Android مدلی قدرتمند برای مدیریت حالت activityها در اپلیکیشن ارائه می کنند. زمانی که حالت activity در حال تغییر است activity از طریق سیستم عامل آگاه می شود که متدهای خاص را در activity فراخوانی کند. نمودار زیر این متدها را که با چرخه حیات activity در ارتباط هستند نشان می دهد:

activity lifeCycle

به عنوان یک برنامه نویس می توانید این متدها را درون activityها override کنید. باید توجه داشته باشید که تمامی متدهای چرخه حیات در تردهای UI فراخوانی می شوند و سیستم عامل از انجام مرحله بعد از کار UI بلاک می شود مانند مخفی کردن activity فعلی، نمایش activity جدید. کدها در این روش ها باید تا حد امکان کوتاه باشد تا یک برنامه به خوبی انجام شود و هر گونه کارطولانی باید بر روی یک ترد در پس زمینه اجرا شود.
در ادامه به هر یک از این متدهای چرخه حیات و کاربرد آن ها پرداخته خواهد شد.

OnCreate

این اولین متدی است که در زمان ایجاد activity فراخوانی می شود. OnCreateهمیشه برای تعریف هر startup که ممکن است توسط هر activity مورد نیاز باشد override می شود مانند:
1- ایجاد Viewها
2- تعریف variableها
3- اتصال داده های استاتیک به لیست
OnCreate دسته ای از پارامترها را می گیرد است که یک فرهنگ لغت برای ذخیره سازی و انتقال اطلاعات حالت و آبجکت های بین activityهاست. اگر bundle برابر null نبود نشان می دهد که activity ریست شده است و باید حالت خود را از instance قبلی restore کند. کد زیر چگونگی بازیابی مقادیر از bundle را نشان می دهد:

با اتمام OnCreate اندروید OnStart را فراخوانی خواهد کرد.

OnStart

این متد بعد از اتمام OnCreate توسط سیستم فراخوانی می شود. در صورتی که activityها بخواهند قبل از visible شدن کار خاصی انجام دهند این متد را override می کنند مانند رفرش مقادیر فعلی viewها در داخل activity.
بلافاصله بعد از اتمام این متد اندروید متد OnResume را فراخوانی می کند.

OnResume

سیستم این متد را زمانی که activity آماره شروع تعامل با کاربر است فراخوانی می کند. activityها این متد را در زمان هایی مانند موارد زیر override می کنند:
1- بالا رفتن رتبه فریم ها
2- شروع انیمیشن ها
3- انتظار آپدیت GPS
4- نمایش هر هشدار یا دیالوگ
برای مثال نمونه کد زیر مقداردهی اولیه به دوربین را نمایش می دهد:

تمامی عملگر هایی که در OnPause انجام شده و done می شوند در OnResume باید un-done شوند به همین دلیل تا زمانی که این متد تنها متدی باشد که در چرخه حیات بعد از OnPause اجرا می شود و activity را به حیات بر می گرداند، OnResume دارای اهمیت است.

پاسخ دهید

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

97 − 87 =