آموزش اندروید استودیوآموزش های برنامه نویسی اندروید

آموزش برنامه نویسی اندروید با اندروید استودیو (بخش هشتم:آشنایی با چرخه حیات Activity در برنامه نویسی اندروید)

در بخش قبلی در مورد اکتیویتی صحبت کردیم. در آخر آن بخش شما در فایل Xml یک اکتیویتی اصلی را مشاهده نمودید.

در این بخش در مورد این اکتیویتی ها صحبت بیشتری خواهد شد و چرخه حیات Activity به صورت کامل برای شما توضیح داده می شود.

چرخه حیات اکتیوینی دقیقا چیست؟

در اپلیکیشن هایی که طراحی خواهیم کرد و یا اپلیکیشن های حاضر در دستگاه اندرویدی شما، هر اپلیکیشن از چندین اکتیویتی تشکیل شده است.

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

فرض کنید دو نوع اکتیویتی داریم. اکتیویتی A و اکتیویتی B.

از اکتیویتی A به اکتیویتی B می رویم. سوالی که پیش می آید اینست که چه بلایی بر سر اکتیویتی A می آید؟ آیا بسته می شود؟ آیا هنوز در حال اجراست؟

اگر اکتیویتی B منابع کمی مصرف نماید، چه می شود؟ اگر منابع زیادی مصرف نماید چه؟ اگر زمان اکتیویتی B خیلی طول بکشد چه می شود؟ اگر کم طول بکشد چه می شود؟

سوال های متعددی ممکن است در این باره پیش آید.

این سوالات همگی به یک چیز می رسند! چرخه حیات

پس آشنایی و مدیریت چرخه حیات می تواند به بهتر شدن اپلیکیشن اندرویدی مان کمک بسیار شایانی نماید.

مدیریت چرخه حیات Activity

هفت حالت برای مدیریت چرخه حیات وجود دارد. این هفت حالت عبارت اند از:

()onCreate (ایجاد):

این اولین فراخوانی چرخه حیات است که با ایجاد اپلیکیشن فراخوانی می شود.

()onStart (شروع):

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

()onResume (ادامه):

این فراخوانی وقتی که کاربر دوباره شروع به تعامل با اپلیکیشن می کند، انجام می شود.

()onPause (مکث):

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

()onStop (توقف):

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

()onDestroy (نابود شدن):

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

()onRestart (راه اندازی مجدد):

این فراخوانی هنگامی اجرا می شود که اکتیویتی که قبلا متوقف (Stop) شده بود، بخواهد دوباره راه اندازی شود.

در بخش قبل مشاهده کردید که وقتی پروژه را شروع کردیم یک فعالیت (activity) اصلی به صورت اتوماتیک ایجاد شد.

android-beginners-10-gsm-developers

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

 

android-beginners-9-gsm-developers

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

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

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

android-activity-lifecycle-gsm-developers

دوستانی که در دانشگاه درس سیستم های عامل را خوانده اند اگر به یاد داشته باشند، هر فرایند چندین مرحله از زمان ایجاد تا پایان داشت. در اینجا نیز اتفاقی مشابه رخ می دهد.
سعی می کنیم تصویر بالا را با یک مثال برای شما توضیح دهیم.
فرض می کنیم که یک اپلیکیشن داریم با دو Activity به نام های A و B. مثال را با اکتیویتی A جلو می بریم.
زمانی که کاربر برای اولین بار اکتیویتی A را ایجاد نماید (این اتفاق فقط در پشت صحنه می افتد و کاربر خودش ممکن است اصلا از اکتیویتی خبر نداشته باشد)، مرحله ()onCreate یعنی ایجاد شدن اکتیویتی، فراخوانی می شود.
سپس اکتیویتی شروع می شود. پس متد ()onStart نیز فراخوانی می شود. حال باید اکتیویتی ادامه داشته باشد پس متد ()onResume فراخوانی می شود.
این مرحله به همین صورت در این قسمت می ماند(تمام نشده است). حال اکتیویتی B می خواهد اجرا شود. ابتدا اکتیویتی A باید منتظر بماند تا مراحل اکتیویتی B اجرا شود پس به مرحله ()onPause می رود. و اکتیویتی B به همان صورت اجرا می شود.
اگر برای زمانی طولانی به اکتیویتی A برنگردیم، اکتیویتی A، متد ()onStop را فراخوانی می کند و متوقف می شود.
اگر حافظه ی کافی برای اکتیویتی A وجود نداشته باشد، متد ()onDestroy فراخوانی می شود.

ایجاد اکتیویتی به دو صورت خودکار و دستی

سوالی که پیش می آید اینست که ما چگونه یک Activity را در کدهایمان ایجاد نماییم.
ابتدا به فایل MainActivity.java در اندروید استادیو می رویم.
قبلا مشاهده کردید که درون کلاس اصلی جاوا، یک اکتیویتی اصلی به صورت خودکار ایجاد شده بود.
حال برای ایجاد یک اکتیویتی دیگر، وقتی هنوز در کلاس اصلی جاوا و خارج از اکتیویتی اصلی هستیم، کلید های ترکیبی Ctrl + O را فشار می دهیم.

android-beginners-13-gsm-developers

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

android-beginners-14-gsm-developers

:می توانید اکتیویتی ها را به صورت دستی نیز ایجاد نمایید که باید از کدهای زیر استفاده کنید. کدهای زیر مربوط به 7متد اکتیویتی می باشد

package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;

public class MainActivity extends Activity {
   String msg = "Android : ";
   
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Log.d(msg, "The onCreate() event");
   }

   /** Called when the activity is about to become visible. */
   @Override
   protected void onStart() {
      super.onStart();
      Log.d(msg, "The onStart() event");
   }

   /** Called when the activity has become visible. */
   @Override
   protected void onResume() {
      super.onResume();
      Log.d(msg, "The onResume() event");
   }

   /** Called when another activity is taking focus. */
   @Override
   protected void onPause() {
      super.onPause();
      Log.d(msg, "The onPause() event");
   }

   /** Called when the activity is no longer visible. */
   @Override
   protected void onStop() {
      super.onStop();
      Log.d(msg, "The onStop() event");
   }

   /** Called just before the activity is destroyed. */
   @Override
   public void onDestroy() {
      super.onDestroy();
      Log.d(msg, "The onDestroy() event");
   }
}

ممکن است کمی این مبحث، گیج کننده به نظر برسد ولی نگران نباشید. در بخش های بعدی بیشتر با این اکتیویتی ها برخورد خواهیم کرد و به صورتی کاربردی آن ها را یاد خواهیم گرفت.

Arash

طراح سایت و برنامه نویس

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا