آموزش برنامه نویسی اندروید – قسمت هفتم – Activities

اندروید اکتیویتی

فعالیت ها یا اکتیویتی ها (Activities) در اندروید

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

اگر شما با زبان های برنامه نویسی C، C ++ یا جاوا کار کرده باشید پس می دانید که برنامه با تابع main شروع می شود. به صورت مشابه، سیستم اندروید نیز برنامه خود را با یک Activity  با فراخوانی متد onCreate شروع می کند. دنباله ای از متدهای بازخورد وتعامل وجود دارند که یک فعالیت یا اکتیویتی را آغاز می کنند. بخشی از دنباله ای از متدهای بازخوردی برای یک فعالیت یا اکتیویتی در نمودار چرخه حیات فعالیت در زیر نمایش داده شده است:

android activity

کلاس Activity متدهای بازخوردی (call backs) یا به عبارتی رویدادها را تعریف می کند. نیازی نیست که شما  تمام متدهای بازخوردی را پیاده سازی کنید. با این حال، درک آنها و اجرای آنها برای شما مهم است تا اطمینان حاصل کنید که برنامه شما آنگونه که کاربران انتظار دارند رفتار می کند.

Callback Description
onCreate() این اولین متد بازخوردی است و زمانی که فعالیت یا اکتیویتی برای اولین بار ایجاد می شود فراخوانی می گردد.
onStart() این متد هنگامی که فعالیت یا اکتیویتی برای کاربر قابل مشاهده می شود فراخوانی می گردد.
onResume() این متد زمانی که کاربر تعامل با برنامه را شروع می کند فراخوانی می گردد.
onPause() فعالیت یا اکتیویتی متوقف شده ورودی کاربر را دریافت نمی کند و نمی تواند هیچ کدی را اجرا کند و زمانی فراخوانی می شود که فعالیت های فعلی متوقف شده اند و فعالیت های قبلی از سر گرفته شده اند.
onStop() این متد بازخوردی  زمانی فراخوانی می شود که فعالیت یا اکتیویتی برای مدت زیادی غیر فعال است.
onDestroy() این متد بازخوردی هنگامی فراخوانی می شود که قبل از اینکه فعالیت یا اکتیویتی تمام شود توسط سیستم نابود گردد.
onRestart() این متد بازخوردی زمانی فراخوانی می شود که فعالیت یا اکتیویتی بعد از توقف مجددا شروع به کار کند.

مثال

این مثال چرخه حیات اکتیویتی  برنامه را مرحله به مرحله نشان می دهد. مراحل زیر را  دنبال کنید تا برنامه اندرویدی که در قسمت مثال Hello World ایجاد کرده بودیم را اصلاح کنیم:

Step Description
۱ یک برنامه با استفاده از eclipse IDE ایجاد کنید و آن را HelloWorld تحت com.example.helloworld نامگذاری کنید. همانطور که در مثال Hello World توضیح داده شد.
۲ فایل اکتیویتی اصلی یعنی MainActivity.java را همانگونه که در زیر توضیح داده شده است اصلاح کنید. و بقیه فایل ها را بدون تغییر نگه دارید.
۳ برنامه را با شبیه ساز اندروید اجرا کنید و نتیجه حاصل از تغییرات انجام شده در برنامه را بررسی کنید.

در زیر محتوای اصلاح شده فایل اکتیوینی  src / com.example.helloworld / MainActivity.java آورده شده است. این فایل شامل متدهای اصلی چرخه حیات یک اکتیویتی است. متد Log.d برای تولید پیام های log استفاده شده است:

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");
   }
}

یک کلاس اکتیویتی همه کامپوننت های رابط کاربری UI را با استفاده از فایل XML موجود در پوشه res/layout پروژه بارگذاری می کند. دستورات زیر کامپوننت های UI را از فایل res/layout/activity_main.xml بارگذاری می نمایند:

setContentView(R.layout.activity_main);

یک برنامه کاربردی می تواند یک یا چند فعالیت یا اکتیویتی را بدون هیچ گونه محدودیتی داشته باشد. هر فعالیتی که شما برای برنامه خود تعریف می کنید باید در فایل AndroidManifest.xml پروزه خود نیز تعریف کنید و فعالیت یا اکتیویتی اصلی برنامه نیز باید در manifest با که شامل MAIN action و LAUNCHER category است به شرح زیر تعریف شود:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" >
   
   <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22" />
   
   <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
       
       <activity android:name=".MainActivity" android:label="@string/title_activity_main" >
          
          <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER"/>
          </intent-filter>
          
       </activity>
       
   </application>
</manifest>

اگر هر کدام از MAIN action یاLAUNCHER category را برای یکی از فعالیت ها یا اکتیویتی های خود تعریف نکنید، آیکون برنامه شما در لیست برنامه های نصب شده در صفحه اصلی نشان داده نخواهد شد.
حال اجازه دهید برنامه Hello World! اصلاح یافته را اجرا کنیم. من فرض می کنم شما هنگام نصب و راه اندازی محیط برنامه نویسی AVD خود را ایجاد کرده اید. برای اجرای برنامه از Eclipse، یکی از فایل های فعالیت یا اکتیویتی پروژه خود را باز کنید و بر روی آیکون Run در قسمت نوار ابزار کلیک کنید. Eclipse برنامه را روی AVD شما نصب می کند و آن را اجرا می کند. و اگر همه چیز در راه اندازی و نصب خوب باشد ، پنجره شبیه ساز نمایش داده خواهد شد و شما باید پیام های log را در پنجره LogCat در Eclipse IDE مشاهده کنید:

۰۷-۱۹ ۱۵:۰۰:۴۳٫۴۰۵: D/Android :(866): The onCreate() event

۰۷-۱۹ ۱۵:۰۰:۴۳٫۴۱۵: D/Android :(866): The onResume() event

۰۷-۱۹ ۱۵:۰۰:۴۳٫۴۰۵: D/Android :(866): The onStart() event

android log

android emulator

اجازه دهید بر روی دکمه قرمز  در شبیه ساز اندروید کلیک کنیم . کلیک بر روی این دکمه پیام رویداد زیر را در پنجره LogCat در Eclipse IDE تولید خواهد کرد:

۰۷-۱۹ ۱۵:۰۱:۱۰٫۹۹۵: D/Android :(866): The onPause() event

۰۷-۱۹ ۱۵:۰۱:۱۲٫۷۰۵: D/Android :(866): The onStop() event

حال دوباره روی دکمه منو  در شبیه ساز اندروید کلیک می کنیم و پیام های رویداد زیر در پنجره LogCat در Eclipse IDE تولید خواهد شد:

۰۷-۱۹ ۱۵:۰۱:۱۳٫۹۹۵: D/Android :(866): The onStart() event

۰۷-۱۹ ۱۵:۰۱:۱۴٫۷۰۵: D/Android :(866): The onResume() event

android emulator

بعد از اینها، اجازه دهید روی دکمه Back در شبیه ساز اندروید کلیک کنیم و نتیجه این کلیک تولید  پیام های رویداد زیر در پنجره LogCat در Eclipse IDE خواهد

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

۰۷-۱۹ ۱۵:۳۳:۱۵٫۶۸۷: D/Android :(992): The onPause() event

۰۷-۱۹ ۱۵:۳۳:۱۵٫۵۲۵: D/Android :(992): The onStop() event

۰۷-۱۹ ۱۵:۳۳:۱۵٫۵۲۵: D/Android :(992): The onDestroy() event

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

یک دیدگاه در “آموزش برنامه نویسی اندروید – قسمت هفتم – Activities”

  1. php می‌گه:

    عالی بود
    مرسی

پاسخ دهید

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

کد امنیتی را در کادر زیر بنویسید *