نحوه استفاده از چرخه حیات و وضعیت Activity، نحوه استفاده از چرخه حیات و وضعیت Activity

1. خوش آمدید

این کد کاربردی بخشی از واحد 1: شروع به کار در دوره آموزشی مبانی برنامه نویس اندروید (نسخه 2) است. اگر به ترتیب روی کدها کار کنید، بیشترین ارزش را از این دوره خواهید گرفت:

  • برای لیست کامل کدهای این دوره، Codelabs for Android Developer Fundamentals (V2) را ببینید.
  • برای جزئیات در مورد دوره، از جمله پیوندهایی به تمام فصل های مفهومی، برنامه ها و اسلایدها، به اصول برنامه نویس اندروید (نسخه 2) مراجعه کنید.

مقدمه

در این عملی با چرخه عمر فعالیت بیشتر آشنا می شوید. چرخه حیات مجموعه‌ای از حالت‌هایی است که یک فعالیت می‌تواند در طول عمر خود، از زمانی که ایجاد می‌شود تا زمانی که از بین می‌رود و سیستم منابع خود را بازیابی می‌کند، در آن قرار داشته باشد. هنگامی که کاربر بین فعالیت‌های برنامه شما (و همچنین به داخل و خارج از برنامه شما) حرکت می‌کند، فعالیت‌ها بین حالت‌های مختلف در چرخه عمرشان جابه‌جا می‌شوند.

مشکل مضاعف

هر مرحله در چرخه حیات یک اکتیویتی دارای یک متد مربوط به تماس است: onCreate()، onStart()، onPause() و غیره. هنگامی که یک فعالیت تغییر حالت می دهد، روش پاسخ تماس مرتبط فراخوانی می شود. شما قبلا یکی از این متدها را دیده اید: onCreate(). با نادیده گرفتن هر یک از روش‌های بازگشت به تماس چرخه حیات در کلاس‌های Activity، می‌توانید رفتار پیش‌فرض فعالیت را در پاسخ به اقدامات کاربر یا سیستم تغییر دهید.

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

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

پیش نیازها

شما باید بتوانید:

  • یک پروژه برنامه در Android Studio ایجاد و اجرا کنید.
  • بیانیه های گزارش را به برنامه خود اضافه کنید و آن گزارش ها را در صفحه Logcat مشاهده کنید.
  • یک Activity و Intent را درک کرده و با آن کار کنید و در تعامل با آنها راحت باشید.

آنچه شما یاد خواهید گرفت

  • چرخه حیات Activity چگونه کار می کند.
  • وقتی یک Activity شروع می شود، مکث می کند، متوقف می شود و از بین می رود.
  • درباره روش‌های برگشت تماس چرخه عمر مرتبط با تغییرات فعالیت.
  • تأثیر اقدامات (مانند تغییرات پیکربندی) که می تواند منجر به رویدادهای چرخه حیات فعالیت شود.
  • نحوه حفظ وضعیت فعالیت در سراسر رویدادهای چرخه حیات.

کاری که خواهی کرد

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

2. نمای کلی برنامه

در این عمل شما به برنامه TwoActivities اضافه می کنید. ظاهر و رفتار برنامه تقریباً شبیه به نسخه قبلی کد است. این شامل دو اجرای Activity است و به کاربر امکان ارسال بین آنها را می دهد. تغییراتی که در این برنامه کاربردی ایجاد می‌کنید بر رفتار کاربر قابل مشاهده آن تأثیری نخواهد داشت.

3. 3. وظیفه 1: تماس های چرخه حیات را به TwoActivities اضافه کنید

در این کار شما تمام متدهای بازگشت به تماس چرخه حیات Activity را برای چاپ پیام ها در logcat در هنگام فراخوانی آن متدها پیاده سازی خواهید کرد. این پیام‌های گزارش به شما این امکان را می‌دهند که ببینید چه زمانی وضعیت چرخه عمر فعالیت تغییر می‌کند و چگونه این تغییرات وضعیت چرخه عمر برنامه شما را هنگام اجرا تحت تأثیر قرار می‌دهد.

1.1 (اختیاری) پروژه TwoActivities را کپی کنید

برای کارهای این عملی، پروژه TwoActivities موجود را که در آخرین عملی ساخته اید، اصلاح خواهید کرد. اگر ترجیح می دهید پروژه TwoActivities قبلی را دست نخورده نگه دارید، مراحل موجود در ضمیمه: Utilities را دنبال کنید تا یک کپی از پروژه تهیه کنید.

1.2 فراخوانی را در MainActivity پیاده سازی کنید

  1. پروژه TwoActivities را در Android Studio باز کنید و MainActivity را در قسمت Project > Android باز کنید.
  2. در متد onCreate() عبارات log زیر را اضافه کنید:
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
  1. اضافه کردن یک override برای onStart() با یک عبارت به گزارش مربوط به آن رویداد:
@Override
public void onStart(){
    super.onStart();
    Log.d(LOG_TAG, "onStart");
}

برای میانبر، Code > Override Methods را در Android Studio انتخاب کنید. یک گفتگو با تمام متدهای ممکنی که می توانید در کلاس خود لغو کنید ظاهر می شود. انتخاب یک یا چند روش پاسخ به تماس از لیست، یک الگوی کامل برای آن متدها، از جمله فراخوانی مورد نیاز به سوپرکلاس، درج می‌کند.

  1. از متد onStart() به عنوان یک الگو برای پیاده سازی فراخوان های چرخه حیات onPause()، onRestart()، onResume()، onStop() و onDestroy() استفاده کنید.

همه متدهای برگشت به تماس دارای امضاهای یکسانی هستند (به جز نام). اگر برای ایجاد این متدهای دیگر فراخوانی ()onStart را کپی و جای‌گذاری می‌کنید، فراموش نکنید که محتویات را برای فراخوانی متد مناسب در superclass به‌روزرسانی کنید و روش صحیح را ثبت کنید.

  1. برنامه خود را اجرا کنید
  2. روی زبانه Logcat در پایین Android Studio کلیک کنید تا صفحه Logcat نشان داده شود. باید سه پیام گزارش را مشاهده کنید که سه حالت چرخه حیاتی را که Activity از آن عبور کرده است، نشان می دهد:
D/MainActivity: -------
D/MainActivity: onCreate
D/MainActivity: onStart
D/MainActivity: onResume

1.3 اجرای فراخوانی چرخه حیات در SecondActivity

اکنون که متدهای برگشت تماس چرخه حیات را برای MainActivity پیاده سازی کرده اید، همین کار را برای SecondActivity نیز انجام دهید.

  1. SecondActivity را باز کنید.
  2. در بالای کلاس، یک ثابت برای متغیر LOG_TAG اضافه کنید:
private static final String LOG_TAG = SecondActivity.class.getSimpleName();
  1. تماس‌های چرخه حیات و بیانیه‌های گزارش را به دومین Activity اضافه کنید. (می توانید روش های برگشت به تماس را از MainActivity کپی و جایگذاری کنید.)
  2. درست قبل از متد finish () یک عبارت log را به متد returnReply() اضافه کنید:
Log.d(LOG_TAG, "End SecondActivity");

1.4 هنگام اجرای برنامه، گزارش را مشاهده کنید**

  1. برنامه خود را اجرا کنید
  2. روی زبانه Logcat در پایین Android Studio کلیک کنید تا صفحه Logcat نشان داده شود.
  3. Activity را در کادر جستجو وارد کنید. Logcat اندروید می تواند بسیار طولانی و درهم و برهم باشد. از آنجایی که متغیر LOG_TAG در هر کلاس حاوی کلمات MainActivity یا SecondActivity است، این کلمه کلیدی به شما امکان می دهد گزارش را فقط برای چیزهایی که به آنها علاقه دارید فیلتر کنید.

مشکل مضاعف

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

  • از برنامه به طور معمول استفاده کنید (پیام ارسال کنید، با پیام دیگری پاسخ دهید).
  • از دکمه Back برای بازگشت از دومین اکتیویتی به اکتیویتی اصلی استفاده کنید.
  • از فلش رو به بالا در نوار برنامه استفاده کنید تا از دومین فعالیت به فعالیت اصلی برگردید.
  • دستگاه را روی هر دو فعالیت اصلی و دوم در زمان های مختلف در برنامه خود بچرخانید و آنچه را که در * گزارش و روی صفحه اتفاق می افتد مشاهده کنید.
  • دکمه نمای کلی (دکمه مربع سمت راست صفحه اصلی) را فشار دهید و برنامه را ببندید (روی X ضربه بزنید).
  • به صفحه اصلی بازگردید و برنامه خود را مجددا راه اندازی کنید.

نکته: اگر برنامه خود را در یک شبیه ساز اجرا می کنید، می توانید چرخش را با Control+F11 یا Control+Function+F11 شبیه سازی کنید.

کد راه حل وظیفه 1

قطعه کد زیر کد راه حل برای اولین کار را نشان می دهد.

MainActivity

قطعه کد زیر کد اضافه شده در MainActivity را نشان می دهد، اما نه کل کلاس را.

متد onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Log the start of the onCreate() method.
        Log.d(LOG_TAG, "-------");
        Log.d(LOG_TAG, "onCreate");

        // Initialize all the view variables.
        mMessageEditText = findViewById(R.id.editText_main);
        mReplyHeadTextView = findViewById(R.id.text_header_reply);
        mReplyTextView = findViewById(R.id.text_message_reply);
}

سایر روش های چرخه عمر:

@Override
protected void onStart() {
        super.onStart();
        Log.d(LOG_TAG, "onStart");
}

@Override
protected void onPause() {
        super.onPause();
        Log.d(LOG_TAG, "onPause");
}

@Override
protected void onRestart() {
        super.onRestart();
        Log.d(LOG_TAG, "onRestart");
}

@Override
protected void onResume() {
        super.onResume();
        Log.d(LOG_TAG, "onResume");
}

@Override
protected void onStop() {
        super.onStop();
        Log.d(LOG_TAG, "onStop");
}

@Override
protected void onDestroy() {
        super.onDestroy();
        Log.d(LOG_TAG, "onDestroy");
}

SecondActivity

قطعه کد زیر کد اضافه شده در SecondActivity را نشان می دهد، اما نه کل کلاس را.

در بالای کلاس SecondActivity:

private static final String LOG_TAG = SecondActivity.class.getSimpleName();

متد ()reply:

public void returnReply(View view) {
        String reply = mReply.getText().toString();
        Intent replyIntent = new Intent();
        replyIntent.putExtra(EXTRA_REPLY, reply);
        setResult(RESULT_OK, replyIntent);
        Log.d(LOG_TAG, "End SecondActivity");
        finish();
}

سایر روش های چرخه عمر:

همانند MainActivity در بالا.

4. 4. وظیفه 2: ذخیره و بازیابی وضعیت نمونه Activity

بسته به منابع سیستم و رفتار کاربر، هر فعالیت در برنامه شما ممکن است بسیار بیشتر از آنچه فکر می‌کنید تخریب و بازسازی شود.

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

وضعیت هر Activity به عنوان مجموعه ای از جفت های کلید/مقدار در یک شی Bundle به نام وضعیت نمونه Activity ذخیره می شود. سیستم اطلاعات حالت پیش‌فرض را درست قبل از توقف فعالیت در حالت نمونه‌ای Bundle ذخیره می‌کند و آن Bundle را برای بازیابی به نمونه Activity جدید ارسال می‌کند.

برای جلوگیری از از دست دادن داده ها در یک Activity زمانی که به طور غیرمنتظره ای از بین رفته و دوباره ایجاد می شود، باید متد ()onSaveInstanceState را پیاده سازی کنید. سیستم این متد را در Activity شما (بین onPause() و onStop()) فراخوانی می کند که احتمال از بین رفتن و ایجاد مجدد Activity وجود داشته باشد.

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

2.1 حالت نمونه Activity را با ()onSaveInstanceState ذخیره کنید

ممکن است متوجه شده باشید که چرخش دستگاه به هیچ وجه بر وضعیت دومین Activity تأثیر نمی گذارد. این به این دلیل است که طرح و وضعیت دومین Activity از طرح و هدفی که آن را فعال کرده است تولید می شود. حتی اگر Activity دوباره ایجاد شود، Intent همچنان وجود دارد و هر بار که متد onCreate() در اکتیویتی دوم فراخوانی می‌شود، از داده‌های آن Intent استفاده می‌شود.

علاوه بر این، ممکن است متوجه شوید که در هر Activity، هر متنی که در پیام یا پاسخ عناصر EditText تایپ کرده اید، حتی زمانی که دستگاه چرخانده می شود، حفظ می شود. این به این دلیل است که اطلاعات وضعیت برخی از عناصر View در طرح‌بندی شما به‌طور خودکار در تغییرات پیکربندی ذخیره می‌شوند و مقدار فعلی EditText یکی از این موارد است.

بنابراین تنها حالت Activity مورد علاقه شما عناصر TextView برای هدر پاسخ و متن پاسخ در Activity اصلی است. هر دو عنصر TextView به طور پیش فرض نامرئی هستند. آنها فقط زمانی ظاهر می شوند که از اکتیویتی دوم به فعالیت اصلی پیامی ارسال کنید.

در این کار کدی را اضافه می‌کنید تا وضعیت نمونه این دو عنصر TextView را با استفاده از onSaveInstanceState() حفظ کنید.

  1. MainActivity را باز کنید.
  2. این پیاده‌سازی اسکلت onSaveInstanceState() را به Activity اضافه کنید یا از Code > Override Methods برای درج یک override اسکلت استفاده کنید.
@Override
public void onSaveInstanceState(Bundle outState) {
          super.onSaveInstanceState(outState);
}
  1. بررسی کنید که آیا هدر در حال حاضر قابل مشاهده است یا خیر، و اگر چنین است، با متد putBoolean() و کلید "reply_visible"، وضعیت دید را در حالت Bundle قرار دهید.
 if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
        outState.putBoolean("reply_visible", true);
    }

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

  1. در داخل همان چک، متن پاسخ را به Bundle اضافه کنید.
outState.putString("reply_text",mReplyTextView.getText().toString());

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

وضعیت فقط آن دسته از عناصر View را ذخیره می کنید که ممکن است پس از ایجاد فعالیت تغییر کنند. سایر عناصر View در برنامه شما (EditText، دکمه) را می توان در هر زمان از طرح بندی پیش فرض بازسازی کرد.

توجه داشته باشید که سیستم وضعیت برخی از عناصر View مانند محتویات EditText را ذخیره می کند.

2.2 حالت نمونه Activity را در onCreate() بازیابی کنید

هنگامی که وضعیت نمونه Activity را ذخیره کردید، باید زمانی که Activity دوباره ایجاد شد آن را بازیابی کنید. شما می توانید این کار را در onCreate()، یا با اجرای callback ()onRestoreInstanceState، که پس از ایجاد Activity پس از ()onStart فراخوانی می شود، انجام دهید.

بیشتر اوقات بهترین مکان برای بازیابی وضعیت Activity در onCreate() است تا اطمینان حاصل شود که UI، از جمله وضعیت، در اسرع وقت در دسترس است. گاهی اوقات انجام این کار در onRestoreInstanceState() پس از انجام تمام مقداردهی اولیه، یا اجازه دادن به کلاس های فرعی برای تصمیم گیری در مورد استفاده از پیاده سازی پیش فرض شما راحت است.

  1. در متد onCreate() بعد از اینکه متغیرهای View با findViewById() مقدار دهی اولیه شدند، یک تست اضافه کنید تا مطمئن شوید که savedInstanceState null نیست.
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);

// Restore the state.
if (savedInstanceState != null) {
}

هنگامی که Activity شما ایجاد شد، سیستم حالت Bundle را به onCreate() به عنوان تنها آرگومان خود ارسال می کند. اولین باری که onCreate() فراخوانی می‌شود و برنامه شما شروع می‌شود، Bundle null است—هیچ وضعیت موجود در اولین باری که برنامه شما شروع می‌شود وجود ندارد. فراخوان های بعدی به onCreate() دارای یک بسته نرم افزاری با داده هایی است که در onSaveInstanceState() ذخیره کرده اید.

  1. در داخل آن چک، نمایان بودن فعلی (درست یا نادرست) را با کلید "reply_visible" از Bundle خارج کنید.
if (savedInstanceState != null) {
    boolean isVisible = 
                     savedInstanceState.getBoolean("reply_visible");
}
  1. یک تست زیر آن خط قبلی برای متغیر isVisible اضافه کنید.
if (isVisible) {
}

اگر یک کلید reply_visible در حالت Bundle وجود دارد (و isVisible بنابراین درست است)، باید حالت را بازیابی کنید.

  1. در داخل تست isVisible، هدر را قابل مشاهده کنید.
mReplyHeadTextView.setVisibility(View.VISIBLE);
  1. پیام پاسخ متنی را از Bundle با کلید "reply_text" دریافت کنید و پاسخ TextView را تنظیم کنید تا آن رشته را نشان دهد.
mReplyTextView.setText(savedInstanceState.getString("reply_text"));
  1. پاسخ TextView را نیز قابل مشاهده کنید:
mReplyTextView.setVisibility(View.VISIBLE);
  1. برنامه را اجرا کنید. سعی کنید دستگاه یا شبیه ساز را بچرخانید تا مطمئن شوید که پیام پاسخ (اگر وجود دارد) پس از ایجاد مجدد فعالیت روی صفحه باقی می ماند.

کد راه حل وظیفه 2

قطعه کد زیر کد راه حل این کار را نشان می دهد.

MainActivity

قطعه کد زیر کد اضافه شده در MainActivity را نشان می دهد، اما نه کل کلاس را.

متد onSaveInstanceState():

@Override
public void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   // If the heading is visible, message needs to be saved.
   // Otherwise we're still using default layout.
   if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
       outState.putBoolean("reply_visible", true);
       outState.putString("reply_text", 
                      mReplyTextView.getText().toString());
   }
}

متد onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   Log.d(LOG_TAG, "-------");
   Log.d(LOG_TAG, "onCreate");

   // Initialize all the view variables.
   mMessageEditText = findViewById(R.id.editText_main);
   mReplyHeadTextView = findViewById(R.id.text_header_reply);
   mReplyTextView = findViewById(R.id.text_message_reply);

   // Restore the saved state. 
   // See onSaveInstanceState() for what gets saved.
   if (savedInstanceState != null) {
       boolean isVisible = 
                     savedInstanceState.getBoolean("reply_visible");
       // Show both the header and the message views. If isVisible is
       // false or missing from the bundle, use the default layout.
       if (isVisible) {
           mReplyHeadTextView.setVisibility(View.VISIBLE);
           mReplyTextView.setText(savedInstanceState
                                  .getString("reply_text"));
           mReplyTextView.setVisibility(View.VISIBLE);
       }
   }
}

پروژه کامل:

پروژه اندروید استودیو: TwoActivitiesLifecycle

5. کدگذاری

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

  • فعالیت اصلی باید حاوی لیستی برای ساخت باشد که باید از ده عنصر TextView خالی تشکیل شده باشد.
  • یک دکمه Add Item در فعالیت اصلی، فعالیت دومی را راه اندازی می کند که حاوی لیستی از اقلام رایج خرید (پنیر، برنج، سیب و غیره) است. از عناصر دکمه برای نمایش موارد استفاده کنید.
  • انتخاب یک مورد، کاربر را به فعالیت اصلی باز می گرداند و یک TextView خالی را برای گنجاندن مورد انتخابی به روز می کند.

از یک Intent برای انتقال اطلاعات از یک فعالیت به فعالیت دیگر استفاده کنید. مطمئن شوید که هنگام چرخش کاربر دستگاه، وضعیت فعلی لیست خرید ذخیره می شود.

6. خلاصه

  • چرخه حیات Activity مجموعه ای از حالت هایی است که یک Activity از آن عبور می کند، از زمانی که برای اولین بار ایجاد می شود شروع می شود و زمانی پایان می یابد که سیستم Android منابع آن فعالیت را بازیابی کند.
  • هنگامی که کاربر از یک فعالیت به فعالیت دیگر و در داخل و خارج از برنامه شما حرکت می کند، هر فعالیت بین حالت های چرخه حیات Activity حرکت می کند.
  • هر حالت در چرخه حیات Activity یک روش برگشت تماس متناظر دارد که می توانید آن را در کلاس Activity خود لغو کنید.
  • متدهای چرخه حیات عبارتند از: onCreate()، onStart()، onPause()، onRestart()، onResume()، onStop()، onDestroy().
  • نادیده گرفتن یک روش بازگشت به تماس چرخه حیات به شما امکان می دهد رفتاری را اضافه کنید که هنگام انتقال Activity شما به آن حالت رخ می دهد.
  • می‌توانید با کد > Override، روش‌های لغو اسکلت را به کلاس‌های خود در Android Studio اضافه کنید.
  • تغییرات پیکربندی دستگاه مانند چرخش باعث می شود که Activity از بین برود و دوباره ایجاد شود که گویی جدید است.
  • بخشی از وضعیت Activity در تغییر پیکربندی، از جمله مقادیر فعلی عناصر EditText، حفظ می‌شود. برای همه داده های دیگر، شما باید به صراحت آن داده ها را خودتان ذخیره کنید.
  • حالت نمونه Activity را در متد onSaveInstanceState() ذخیره کنید.
  • داده های حالت نمونه به صورت جفت کلید/مقدار ساده در یک Bundle ذخیره می شوند. از روش های Bundle برای قرار دادن داده ها در بسته و بازگرداندن داده ها از Bundle استفاده کنید.
  • حالت نمونه را در onCreate() که روش ترجیحی است یا onRestoreInstanceState() بازیابی کنید. برگشت