آشنایی کامل با چرخه حیات activity

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

چرخه حیات activity

()OnCreate : این متد زمانی فراخوانی می شود که activity برای اولین بار ساخته می شود.

()OnStart : این متد زمانی فراخوانی می شود که activity برای کاربر به نمایش در بیاید.

()OnResume : این متد زمانی فراخوانی می شود که activity آماده تعامل با کاربر باشد.

()OnPause: این متد زمانی فراخوانی می شود که activity به صورت موقت نگه داشته می شود تا activity دیگری شروع به کار کند. اگر کاربر دوباره به همین activity برگردد، ()OnResume فراخوانی می شود.

()OnStop: این متد زمانی فراخوانی می شود که دیگر activity به کاربر نمایش داده نمی شود. با متد ()OnRestart هم می توان مجدد آن activity را فراخوانی کرد.

()OnDestroy:این متد زمانی فراخوانی می شود که activity به طور کامل از بین می رود.

()OnRestart: این متد زمانی فراخوانی می شود که activity بعد از Stop شدن مجدد ریستارت شود.

چرخه حیات activity در برنامه نویسی

برای اینکه چرخه حیات Activity‌ را بیشتر درک کنیم سراغ برنامه نویسی می رویم تا در اجرای برنامه عملکرد متدهایی که گفتیم را ببینیم. بنابراین نیاز است که در برنامه log تعریف کنیم. وقتی پروژه را run  می کنیم، هزاران فعالیت در جاوا در حال انجام می باشد و ما فقط می خواهیم فعالیت هایی که مد نظر ماست را نمایش دهد بنابراین نیاز به تعریف log  می باشد.

تعریف تمام متدها در برنامه

برنامه ای که در جلسه قبل ایجاد کردیم را باز می کنیم. (می توانید یک برنامه جدید ایجاد کنید). فایل Activity خود را دوبار کلیک کنید تا پنجره آن باز شود.

همانطور که می بیند متد ()OnCreate به صورت پیش فرض تعریف شده است. در جلسه قبل گفتیم که یک subclass به نام OnCreate داریم که از superclass خود به نام AppCompatActivity اکستند می شود. و متد OnCreate را از پدرش به ارث می برد  بنابراین نیاز به کدنویسی ندارد.

متد های دیگر چرخه حیات (یعنی: OnStart ، OnResume، OnPause، OnStop، OnDestroy ) را هم تعریف می کنیم.

برای اضافه کردن متد های بالا دو روش داریم :

  • نام متد را تایپ کنیم ،می بینیم که خود جاوا لیستی از متدها را به ما پیشنهاد می دهد، متد مدنظر خود را انتخاب می کنیم تا برای ما ایجاد کند.

چرخه حیات activity-تعریف متد

با انتخاب متد از لیست پیشنهادی، متد ()OnStart به صورت زیر ظاهر می شود.

چرخه حیات activity-ایجاد متد Onstart

  • روش دوم اینکه روی صفحه راست کلیک کنید و گزینه …Generate را انتخاب کنید. در پنجره ظاهر شده override Method را انتخاب کنید سپس یک پنجره ظاهر می شود که لیست تمام متدهای Supercalss که گوگل ایجاد کرده است را نمایش می دهد. شما می توانید متدی که لازم دارید را انتخاب کنید. (در تصویر زیر این روند را مرحله به مرحله می بینید)

چرخه حیات activity-نحوه تعریف متد

بقیه متد ها را هم با یکی از دو روش بالا ایجاد کنید.

چرخه حیات activity-تعریف متدها

ایجاد log در برنامه

خب حالا نوبت به این رسیده که log ایجاد کنیم تا عملکرد هر کدام از این توابع را ببینیم.

  • ابتدا کتابخانه log را import می کنیم:

import android.util.Log;

سپس یک متغیر به نام mylog از نوع String تعریف می کنم و به آن مقدار دلخواه می دهم.

private final String مقدار متغیر”=نام متغیر”;

چرخه حیات activity

حالا باید در هر کدام از توابع این log را قرار دهیم و بگوییم اکتیویتی در هر فازی که هست اعلان کند. خب برای این کار کد زیر را به هر متد اضافه می کنیم:

Log.i (پیغام” ، نام متغیر لاگ”);

وقتی Log(با L بزرگ) را تایپ می کنید و یک دات قرار می دهید، توابع مختلفی به شما نشان می دهد. تابع i را که شامل دو پارامتر string Tag و string msg است را انتخاب می کنیم.( در هنگام اجرا عملکرد آن را خواهید دید.)

چرخه حیات activity

به جای tag نام متغیر log را می گذاریم و به جای msg پیغامی که می خواهیم چاپ کند. مثلا ما در تابع OnCreate می خواهیم log ایجاد کنیم باید به صورت زیر بنویسیم:

Log.i(mylog,”oncreate”);

چرخه حیات activity-تعریف لاگ متدها

اجرای برنامه

بعد از اینکه برای همه توابع ایجاد کردیم، برنامه را اجرا می کنیم .چون ما می خواهیم با Genymotion اجرا کنیم ، بنابراین باید اول Genymotion که در جلسه پنچم نصب کردیم را اجرا کنیم و سپس دیوایسی که به آن اضافه کردیم را با زدن دکمه Start اجرا می کنیم.
حالا در اندروید استودیو روی دکمه سبز موجود در نوار بالا کلیک می کنیم تا پنجره ای شامل تمام دیوایس های موجود نمایش داده شود.

چرخه حیات activity-اجرای برنامه

برنامه اجرا می شود و روی دیوایس ما ظاهر می شود. تب Logcat را بزنید تا log هایی که نمایش می دهد را ببینید.

چرخه حیات activity-اجرای برنامه

همانطور که می بینید و قبلا گفتیم هزاران لاگ که ما از آنها سر درنمیارویم را نمایش می دهد پس باید لاگ هایی که می خواهیم را فیلتر کنیم.
برای اینکه فقط لاگ هایی که ما تعیین کردیم نمایش دهد ، سمت راست پنجره logcat یک منو کشویی وجود دارد که به صورت پیش فرض روی show only selected application تنظیم شده است که تمام لاگ ها را نمایش می دهد.
منو را باز کنید و گزینه Edit Filter را انتخاب کنید. در پنجره باز شده log خود را تعریف کنید.(تصویر زیر کاملا گویاست)

چرخه حیات activity-تعریف فیلتر

مجدد برنامه را اجرا کنید می بینید که فقط لاگ هایی که شما می خواهید فیلتر شده اند و نمایش داده می شوند.

چرخه حیات activity-اجرای برنامه و دیدن لاگ ها

همانطور که می بینید وقتی برنامه را اجرا می کنیم(در حالی که فیلتر روی mylog تنظیم شده است) سه متد اول یعنی OnCreate ، OnStart  ، OnResume  خیلی سریع اجرا می شوند.
چون برنامه ما خیلی ساده است، دکمه یا اکتیویتی دیگری ندارد که اجرا کنیم و شما عملکرد متدها را ببینید؛ بنابراین دکمه Recent app را می زنیم. با زدن این دکمه ابتدا متد OnPause و سپس متد OnStop اجرا می شوند.

چرخه حیات activity-اجرای برنامه و دیدن لاگ ها

دلیل اینکه خیلی سریع به متد OnStop می رود، این است که ما ازبرنامه خارج شدیم . اگر داخل برنامه دکمه ای بود که باعث می شد به اکتیویتی دیگری برویم ، متد OnStop اینقدر سریع رخ نمیداد.
اگر مجدد وارد برنامه شویم onRestart اجرا میشود ولی اگر آن را ببندیم onDestroy اجرا می شود.

چرخه حیات activity-اجرای برنامه و دیدن لاگ ها

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

شما می توانید نظرات و سوالات خود را در قسمت دیدگاه ها با ما در میان بگذارید.

مدرس: مهندس مهدی نیکخواه

به این مقاله چند تا ستاره میدی؟
[تعداد رای: 9 امتیاز: 5]