اگه تازه وارد دنیای اندروید شدی، حتماً برات پیش اومده که وقتی گوشی رو میچرخونی (Rotate میکنی)، اطلاعاتی که کاربر توی صفحه وارد کرده بود میپره، یا وقتی یه تماس تلفنی بهت میشه و برمیگردی توی برنامه، میبینی اپلیکیشن از اول اجرا شده!
همه این داستانها زیر سر Lifecycle هست. اندروید مثل یه ناظم سخت گیر، مدام به برنامه ت میگه: «الان باید اجرا بشی»، «الان باید بری تو پسزمینه»، «الان دیگه وقتشه که از حافظه پاک بشی». اگه این چرخه رو نشناسی، برنامه ت پر از باگ میشه.
چرخه حیات اصلاً یعنی چی؟
تصور کن یه گیاه داری. این گیاه یه چرخه ی زندگی داره: دونه ست، بعد جوونه میزنه، بزرگ میشه، گل میده و در نهایت خشک میشه. توی اندروید هم، هر صفحه (Activity) دقیقاً همینطوره. از لحظه ای که روی آیکون برنامه کلیک میکنی تا لحظه ای که برنامه رو میبندی، اکتیویتی تو از چند مرحله یا «وضعیت» مختلف رد میشه. اندروید برای هر مرحله یه متد (تابع) مخصوص داره که بهشون میگیم Callback.
۶ مرحله اصلی که هر برنامه نویسی باید قورت بده!
بیا خیلی سریع و به زبون ساده ببینیم وقتی یه صفحه باز و بسته میشه، چه اتفاقی میافتد:
۱. onCreate(): لحظه تولد
این اولین جاییه که اکتیویتی واردش میشه. اینجا همونجاییه که تو به اندروید میگی چه شکلی (Layout) رو نشون بده. این متد فقط یکبار اجرا میشه. انگار داری فونداسیون ساختمون رو میریزی.
۲. onStart(): آمادهسازی
حالا صفحه داره برای کاربر «مرئی» میشه، اما هنوز کاربر نمیتونه باهاش تعامل داشته باشه (مثلاً هنوز نمیتونه روی دکمهای کلیک کنه).
۳. onResume(): اوج هیجان!
اینجا اکتیویتی کاملاً بالا اومده و کاربر داره باهاش کار میکنه. اگه برنامه ت قراره چیزی رو مدام آپدیت کنه یا انیمیشنی پخش کنه، جاش اینجاست. اپلیکیشن توی این حالت در حالت "تمرکز" (Focus) قرار داره.
۴. onPause(): یه لحظه صبر کن!
وقتی یه اتفاقی می افته که صفحه هنوز یه ذره اش معلومه ولی تمرکز از روش برداشته شده (مثلاً یه دیالوگ نیمه شفاف میاد رو صفحه)، این متد صدا زده میشه. اینجا جای خوبیه برای متوقف کردن کار های سنگین.
۵. onStop(): خداحافظ موقت
وقتی کاربر دیگه اصلاً صفحه رو نمیبینه (مثلاً دکمه Home رو زده یا رفته به یه اکتیویتی دیگه)، برنامه وارد این فاز میشه. صفحه هنوز توی حافظه هست، ولی جلوی چشم نیست.
۶. onDestroy(): پایان زندگی
اینجا دیگه کار تمومه! سیستم تصمیم گرفته اکتیویتی رو کلاً از حافظه پاک کنه. یا کاربر برنامه رو بسته، یا سیستم برای آزاد کردن رم مجبور شده این صفحه رو بکشه.
یه سناریوی خیلی رایج: وقتی گوشی میچرخه!
جالبه بدونی وقتی گوشی رو میچرخونی (Rotation)، اندروید یک بار اکتیویتی رو Destroy میکنه و دوباره از اول Create میکنه! برای همینه که اگه حواست نباشه، اطلاعات کاربر میپره. راهحلش استفاده از ViewModel هست که توی این طوفانِ Lifecycle، اطلاعات رو برات سالم نگه میداره.
جمع بندی
درک چرخه حیات اندروید یعنی بدونی هر کدی رو کجا بنویسی. مثلاً اگه میخوای یه موزیک رو قطع کنی، نباید توی onDestroy بنویسی، چون ممکنه هیچ وقت اجرا نشه! بهترین جا onStop یا onPause هست.
نظرات کاربران (0)