چرخه حیات اکتیویتی (activity) در اندروید

یک activity ممکن است در یکی از چند حالت زیر باشد:

وضعیتشرح
startingIn process of loading up, but not fully loaded
runningDone loading and now visible on the screen
pausedPartially obscured or out of focus, but not shut down
stoppedNo longer active, but still in the device’s active memory
destroyedShut down and no longer currently loaded in memory

با تغییر از یک وضعیت activity به وضعیت دیگر، رخدادهایی (event) در برنامه ثبت می شود که درون کد اپلیکیشن خود میتوانید به آنها گوش کنید و بر اساس نوع رخداد، کد مورد نظرتان اجرا شود. رخدادهایی مانند onCreate، onPause، onResume، onStop، onDestroy.

شمای کلی چرخه عمر acitivity

متد OnCreate

در متد OnCreate شما شیء activity را میسازید و آن را راه اندازی میکنید، منابع استاتیک مانند تصاویر و layout ها رو لود میکنید، منوها را میسازید، و …

پس از فراخوانی این متد، شی Activity موجود است. بنابراین میتوانید به متد OnCreate به عنوان سازنده (Constructor) یک Activity فکر کنید.

نمونه کد OnCreate میتواند به شکل زیر باشد:

public class FooActivity extends Activity {
...
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState); // always call super
   setContentView(R.layout.activity_foo); // set up layout
   any other initialization code; // anything else you need
 }
}

متد OnPause

وقتی متد OnPause صدا زده می شود، activity شما هنوز زنده است. ممکن است به صورت موقت در پس زمینه قرار گرفته باشد، یا در مسیر خاتمه یافتن اجرا باشد.

در زمان فراخوانی این متد، لازم است که انیمیشن ها و کارهای دیگری که ممکن است CPU مصرف کنند را متوقف کنید، تغییرات ذخیره نشده را ثبت کنید، و منابعی از سیستم که ممکن است مصرف باتری گوشی را افزایش دهند را آزاد سازید.

نمونه کد onPause میتواند به شکل زیر باشد:

public void onPause() {
   super.onPause(); // always call super
   if (myConnection != null) {
      myConnection.close(); // release resources
      myConnection = null;
   }
}

متد OnResume

وقتی متد OnResume فراخوانی میشود، activity شما در حال انتقال مجدد از حالت Paused به حالت Running است.

این متد همچنین در زمانی که activity برای اولین بار ساخته میشود نیز فراخوانی میشود

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

نمونه کد OnResume می تواند به شکل زیر باشد:

public void onResume() {
   super.onPause(); // always call super
   if (myConnection == null) {
      myConnection = new ExampleConnect(); // init.resources
      myConnection.connect();
   }
}

متد OnStop

وقتی متد onStop فراخوانی میشود، activity دیگر بر روی صفحه نمایش گوشی قابل مشاهده نیست. این رخداد در حالتی است که کاربر برنامه دیگری را باز گرده باشد، به activity دیگری درون اپلیکیشن خود شما رفته باشد، یا در زمانی که درون اپلیکیشن شما بوده تماس ورودی را دریافت کرده است.

اپلیکیشن شما ممکن است همچنان در حال اجرا باشد، اما activity شما دیگر در حال اجرا نیست.

متد OnPause همیشه قبل از OnStop فراخوانی میشود. متد OnStop معمولا فعالیت های سنگین مرتبط با اتمام کار، مانند ثبت اطلاعات در پایگاه داده را انجام می دهد.

نمونه کد OnResume می تواند به شکل زیر باشد:

public void onStop() {
   super.onStop(); // always call super
   ...
{

متدهای OnStart و OnRestart

متد OnStart هر زمان که یک activity شروع به اجرا میکند، فراخوانی میشود. متد OnRestart زمانی فراخوانی میشود که یک activity متوقف شده و مجددا اجرا می شود (در واقع تمام دفعات به جز دفعه اول). در این متدها میتوان هر منبعی که در زمان فراخوانی OnStop متوقف شده است را مجددا راه اندازی کنیم.

مندهای OnStart و OnRestart معمولا استفاده نمی شوند و به جای آنها از متد OnResume استفاده میشود.

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

public void onStart() {
   super.onStart(); // always call super
   ...
}
public void onRestart() {
   super.onRestart(); // always call super
   ...
{

متد OnDestroy

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

معمولا استفاده از متدهای onPause و onStop بر استفاده از این متد ترجیح دارد، زیرا زمان فراخوانی این متدها قابل پیش بینی است

نمونه کد OnDestroy می تواند به شکل زیر باشد:

public void onDestroy() {
   super.onDestroy(); // always call super
   ...
}
Was this article helpful?
Dislike 0
قبلی: داشتن چندین Activity در یک برنامه اندرویدی
بعدی: آموزش ثبت وقایع (log زدن) در برنامه نویسی اندروید