مرتضي درزي
مرتضي درزي
خواندن ۴ دقیقه·۴ سال پیش

چرخه حیات اکتیویتی اندروید به زبان ساده - 2

همونطور که در قسمت قبلی بصورت ساده توضیح داده شد هر کدوم از این متد ها در زمان خاصی از چرخه حیات اکتیویتی فراخوانی میشن . اما سوال اینجاست که چه کد هایی رو باید در این متد ها نوشت و چه موقع ازشون استفاده کرد

https://virgool.io/p/bukqu0scyzmw/%DA%86%D8%B1%D8%AE%D9%87%D8%AD%DB%8C%D8%A7%D8%AA%D8%A7%DA%A9%D8%AA%DB%8C%D9%88%DB%8C%D8%AA%DB%8C%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%D8%A8%D9%87%D8%B2%D8%A8%D8%A7%D9%86%D8%B3%D8%A7%D8%AF%D9%87%DA%86%D8%B1%D8%AE%D9%87%D8%AD%DB%8C%D8%A7%D8%AA%D8%A7%DA%A9%D8%AA%DB%8C%D9%88%DB%8C%D8%AA%DB%8C%D8%A8%D8%B5%D9%88%D8%B1%D8%AA%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%DB%8C%D8%B3%D8%A7%D8%AF%D9%87%D8%AA%D9%88%D8%B6%DB%8C%D8%AD%D8%AF%D8%A7%D8%AF%D9%87%D8%B4%D8%AF%D9%87virgool.io

برای درک بهتر موضوع باید بدانیم از چه وضعیتی وارد متد شده و بعد از آن به کجا خواهیم رفت . بریم ببینیم در هر متد چه کدی نوشته میشود :

چرخه حیات اکتیویتی
چرخه حیات اکتیویتی

متد onCreate :

همانطور که گفته شد این گیت ورودی است وقتی که اکتیویتی ساخته میشود و همچنین وقتی از بین برود و دوباره ساخته شود این متد فراخوانی خواهد شد . از طرفی بعد از این متد هم قرار دارد که در آن اپلیکیشن برای کاربر قابل نمایش است پس در این متد تمام نیاز های اولیه اکتیویتی باید ساخته شود . مثل کلاس های برای ارتباط با سرور ، کلاس های برای ارتباط با دیتابیس یا حتی مقدار دهی فیلد های داخلی و هر موضوع که در طول اکتیویتی به آن نیاز است .

متد :

ورود به این متد از وضعیت اجرا است . اپلیکیشن در این حالت موقتا به پس زمینه میرود ، پس در این متد باید کارهایی که در حال انجام است ، نه کارهای اجرایی نمایش اکتیویتی متوقف شود. مثلا فرضا داشتیم در اخرین لحظه عکسی را لود میکردیم ، در این متد میتوان لود کردن عکس را متوقف کرد چون کاربر فعلا در حال انجام کار دیگری است . همچنین میتوان آخرین مقادیر بدست امده تا این لحظه را در این متد ذخیره کرد تا در برگشت دوباره قابل استفاده باشد . البته این بسته به نیاز برنامه دارد و ممکن است نیاز برنامه طوری تعریف شده باشد که با متوقف شدن اپ باز هم به کارش ادامه دهد .

متد :

این متد دقیقا پس از وضعیت سکوت که در قسمت قبلی توضیح دادیم اتفاق می افتد و جایی است که میرویم تا اپلیکیشن را از کاربر مخفی کنیم . معمولا کارهایی که در حال انجام بوده است و هنوز تمام نشده در این متد متوقف میشود . مثلا دریافت اطلاعات از سرور یا محاسبات خاص . در ضمن می شود در این مرحله اطلاعات مهم مورد نیاز در زمان برگشت به برنامه را ذخیره کرد . تفاوت این متد با این است که پس از این متد اپ دیگر به کاربر نمایش داده نمیشود و عملا برگشت کاربر نیاز به انتخاب او دارد . پس باید تقریبا اپ به حالت توقف با انتظار برگشت ادامه دهد

متد onRestart :

این متد چیزی شبیه onCreate میباشد برای زمانی که از وضعیت خاموشی امده ایم . یعنی پیش زمینه کارهایی که در متوقف شده باید در این متد ساخته شود تا در متد بعدی استفاده شود .

متد :

این متد از وضعیت خاموشی صدا زده میشود . یعنی قبلا در کارهایی در متوقف شده است . باید ان کارها در این متد از سر گرفته شود . هر چند این متد بعد از onCreate هم صدا زده میشود ولی کار اصلی ان برگرداندن وضعیت به حالت اجرا از حالت خاموشی است . با این حال میتوان کارهای مرتبط به شروع اجرای اپ در این متد انجام شود با دید به این سمت که این کارهای مرتبط در میتواند متوقف شود ، کارهایی که بتوان در زمان نمایش ندادن اپ به کاربر متوقف شود . میتوان چک کرد اگر اطلاعات ذخیره شده در وجود دارد طبق آن پیاده سازی شود ، عملا این متد و در دو سوی مختلف وضعیت خاموشی قرار دارند .

متد :

این متد بعد از حالت سکوت صدا زده میشود . یعنی اپ موقتا متوقف شده بود . کاری اگر در حال انجام بوده و در متوقف شده از اینجا باید از سر گرفته شود . اطلاعاتی اگر ذخیره شده میتوان استفاده شود . در ضمن بعد از نیز این متد صدا زده میشود هرچند مقصود اصلی وجود این متد نیست ولی میتوان کارهای اولیه اپ را نیز در آن انجام داد با دید به اینکه این کار قبلا متوقف شده در باشد . عملا این متد و در دو سمت حالت سکوت قرار دارند

متد onDestroy :

همانطور که مشخص است این متد برای ازاد سازی منابع در اختیار گرفته شده اپ می باشد و قبل از توقف کامل اپ میتواند مورد استفاده قرار گیرد .

متد onSaveInstanceState :

این متد قبل از متد onDestroy یا حتی قبل از اجرا خواهد شد و محلی است برای ذخیره سازی اطلاعاتی که وقتی اپ دوباره از onCreate ساخته خواهد شد استفاده شود . این اطلاعات در Bundle ذخیره خواهد شد و از طریق پارامتر متد onCreate(savedInstanceState: Bundle?) قابل دسترسی است . اینکار در یک فعالیت تو کار در سیستم اندروید انجام خواهد شد و معمولا بیشترین استفاده آن برای زمانی است که دستگاه موبایل حالت چرخش را ایجاد کند . در این حالت اپ به حالت های سکوت و خاموشی رفته و حتی onDestroy نیز فراخوانی خواهد شد و باز از اول onCreate صدا زده میشود و میتوان مقادیری را از طریق پارامتر به متد پاس داد .

نکته :

از اندروید 7 به بالاتر این امکان اضافه شده که بتوان دو اپ را با هم در یک صفحه مشاهده کرد . باید این را در نظر بگیرید که زمانی که اکتیویتی شما برای این حالت آماده میشود در حالت سکوت قرار میگیرد و فراخوانی میشود و وقتی هر دو اپ در صفحه قرار گرفتند فراخوانی شده و اپ در حالت اجرا می باشد . حتی زمانی که در قسمت دیگر صفحه در حال کار با اپ دیگر هستید نیز اپ در حالت اجرا باقی می ماند .

اندرویدبرنامه نویسیچرخه حیات
برنامه نویس فرانت ( ریکت )
شاید از این پست‌ها خوشتان بیاید