سلام دوستان عزیز ،
تو این جلسه قراره که با چرخه حیات اکتیویتی (Activity Lifecycle) به صورت کامل آشنا بشید
حالا چرا می گم به صورت کامل
چون در بیشتر سایت های فارسی زبان به صورت پراکنده و گاهی اوقات نصفه توضیح داده شده
اما امروز من یک مبحث کامل در مورد چرخه حیات اکتیویتی براتون آماده کردم
بنده همیشه سعی دارم مباحث رو به صورت پروژه محور و با مثال توضیح بدم
تا شما کاربران عزیز مباحث رو به خوبی درک کنید …
با همیار اندروید به درکی کامل از برنامه نویسی اندروید خواهید رسید ...
درک اولیه از چرخه حیات اکتیویتی
ما یک اپلیکیشن را طراحی کرده ایم که دارای چندین اکتیویتی است
وقتی کاربر آن را در گوشی خود اجرا می کند
هر اکتیویتی بخشی از حافظه دستگاه را به خود اختصاص می دهد
و بسته به نوع فعالیت اکتیویتی سرعت پردازش دستگاه پایین می آید
حال در نظر بگیرید که
ما از اکتیویتی A به اکتیویتی B رفته ایم و دیگر نیازی به اکتیویتی A نداریم …!!
آیا اکتیویتی A هنوز در حال اجراست و حافظه دستگاه را اشغال کرده است …!؟
آیا اکتیویتی A بسته شده و حافظه دستگاه آزاد شده است …!؟
اگر ما فقط برای یک مدت کوتاه به اکتیویتی B برویم ، آیا اکتیویتی A بسته خواهد شد …!؟
اگر به بخش تنظیمات اپلیکیشن خود برویم و پس از مدتی به اکتیویتی بازگردیم ، آیا اکتیویتی هنوز پابرجاست …!؟
آیا زمانی که یک موسیقی در اکتیویتی A در حال اجراست با رفتن به اکتیویتی B ، موسیقی متوقف می شود …!؟
آیا پس از بازگشت به اکتیویتی A ، موسیقی از ابتدا پخش می شود …!؟
و خیلی از موارد دیگر وجود دارد
که همگی آن ها به چرخه حیات اکتیویتی بستگی دارد
ما با مدیریت چرخه حیات اکتیویتی می توانیم
یک اپلیکیشن استاندارد ، قدرتمند و سریع ایجاد کنیم …
معرفی متدهای چرخه حیات اکتیویتی
به طور کل برای مدیریت چرخه حیات اکتیویتی
هفت حالت وجود دارد
هر حالت دارای یک متد مخصوص به خود می باشد
۱- onCreate ایجاد
۲- onStart شروع
۳- onResume ادامه
۴- onPause مکث
۵- onStop توقف
۶- onDestroy نابود شدن
۷- onRestart راه اندازی مجدد
ایجاد متدهای چرخه حیات اکتیویتی
وقتی که شما اولین پروژه خود را ایجاد می کنید
به صورت پیش فرض اولین متد چرخه حیات در اکتیوتیی ایجاد می شود
من یک پروژه جدید ایجاد کرده ام
که اولین حالت از چرخه حیات اکتیوتیی به نام onCreate ایجاد شده است
به تصویر زیر دقت کنید
شما برای ایجاد دیگر حالت ها
یا بهتر است بگویم برای ایجاد دیگر متدهای چرخه حیات باید به روش زیر عمل کنید
در حالی که درون کلاس اصلی اکتیویتی
و خارج از متدهای دیگر هستید
کلیدهای ترکیبی Ctrl+O را فشاردهید
در تصویر زیر محل مورد نظر نمایش داده شده است
حال می توانید دیگر متدهای مربوط به چرخه حیات را انتخاب کنید
حتی می توانید به صورت دستی هم این متدها را نوشت
کدهای زیر
مربوط به هفت متد چرخه حیات می باشند
کدهای کامل اکتیویتی من هستند
package com.hamyarandroid.activitylifecycle;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onRestart() {
super.onRestart();
}
}
کاربرد متدهای چرخه حیات اکتیویتی
برای مدیریت چرخه حیات اکتیوتی ، باید کاربرد هر متد را بلد باشید
تا اینجا یاد گرفتید که هفت متد برای مدیریت چرخه حیات وجود دارد
و آنها را هم ایجاد کردید
حالا در این مرحله یاد میگیرید که هر متد چه کاربردی داره
و کجای این چرخه قرار داره
برای درک چرخه حیات
یک تصویر براتون آماده کردم
این تصویر مربوط به چرخه حیات یک اکتیویتی می باشد
خوب به تصویر دقت کنید
تشریح متدهای چرخه حیات اکتیویتی
ما یک اپلیکیشن با دو اکتیویتی داریم (A , B)
اکتیویتی مد نظر ما اکتیویتی A می باشد
وقتی کاربر برای اولین بار اکتیویتی را اجرا می کند
به ترتیب متدهای زیر اجرا می شوند
onCreate ( ایجاد )
onStart ( شروع )
onResume ( ادامه )
و در نهایت اولین UI یا همان رابط کاربری به کاربر نمایش داده می شود
۱- وقتی کاربر به اکتیویتی B می رود
اکتیویتی A به حالت onPause وارد می شود و موقتا مکث می کند
در این هنگام دستورات (کدها) درون متد onPause اجرا می شوند
۲- وقتی پس از یک مدت طولانی به اکتیویتی A بازنگردیم
اکتیویتی A به حالت onStop وارد می شود
و دیگر به کاربر نشان داده نمی شود
در این هنگام دستورات (کدها) درون متد onStop اجرا می شوند
۳- بعد از مرحله onStop ، اکتیویتی A به حالت onDestroy وارد می شود
این حالت همیشه صورت نمی گیرد
درواقع زمانی که سیستم گوشی با کمبود حافظه مواجه می شود
این متد فراخوانی می شود و اکتیویتی بسته خواهد شد
۴ و ۵ – اگر اکتیویتی ما در حالت های onPause یا onStop قرار داشته باشد
درصورتی که برنامه های دیگر نیاز به حافظه داشته باشند
فعالیت برنامه متوقف می شود و سپس اکتیویتی به حالت onCreate وارد می شود
در این هنگام اکتیویتی از ابتدا ساخته می شود
۶- بعد از مرحله onPause
زمانی که اکتیویتی موقتا مکث می کند
اگر کاربر دوباره به اکتیویتی A برگردد
چرخه حیات از مرحله onResume از سر گرفته می شود
و دیگر نیازی به مرحله ایجاد (onCreate) و مرحله شروع (onStart) نیست
۷- بعد از مرحله onStop
زمانی که اکتیویتی به کاربر نمایش داده نمی شود
اگر کاربر دوباره به اکتیویتی A برگردد
چرخه حیات به مرحله onRestart وارد می شود
در این هنگام کدهای درون متد onRestart اجرا می شوند
و سپس چرخه حیات از مرحله onStart از سر گرفته می شود
و دیگر نیازی به مرحله ایجاد (onCreate) نیست
جمع بندی نهایی
onCreate :
وقتی که اکتیویتی برای اولین بار ایجاد می شود ، این متد فراخوانی می گردد
onStart :
وقتی که اکتیویتی به کاربر نمایش داده می شود ، این متد فراخوانی می گردد
onResume :
وقتی اکتیویتی شروع به تعامل با کاربر میکند ، این متد فراخوانی می گردد
onPause :
وقتی که اکتیویتی کنونی موقتا نگه داشته می شود و اکتیویتی دیگر شروع بکار می کند ، این متد فراخوانی می گردد
onStop :
وقتی که اکتیویتی به کاربر نمایش داده نمی شود ، این متد فراخوانی می گردد
onDestroy :
قبل از اینکه اکتیویتی کاملا از بین برود این متد توسط سیستم فراخوانی می گردد
onRestart :
وقتی که اکتیویتی پس از توقف دوباره شروع به کار می کند ، این متد فراخوانی می گردد
نکته
تا جایی که تونستم روان و ساده توضیح دادم
تا شما دوستان عزیز این مبحث رو به خوبی درک کنید
این مبحث یک مبحث کلیدی هستش پس خوب تمرینش کنید
خوب خوب خوب تمرین کنید
و اینم بگم که نکات زیادی هنوز باقی مونده
که به امید خدا در مباحث بعدی آموزش خواهم داد
برای یادگیری گام به گام مباحث مربوط به اکتیوتی ها و دیگر مباحث اندروید
از بخش مسیر یادگیری استفاده کنید
سخن آخر
خیلی خب دوستان
اگه سوالی ، مشکلی ، پیشنهادی یا هرچیز دیگه ای بود
می تونید کامنت بزارید
یا از طریق تلگرام با ما در میون بزارید
حتما رسیدگی می شود …
اینم از
کانال اطلاع رسانی ، گروه پرسش و پاسخ و پشتیبان همیار اندروید در تلگرام
به امید موفقیت
بدرود .