اکتیویتی (Activity) در اندروید، بررسی ساختار و چرخه حیات آن


یک اکتیویتی نشان دهنده یک صفحه به همراه user interface مختص خودش است. برای مثال یک اپلیکیشن ایمیل باید یک اکتیویتی جهت لیست ایمیل های ورودی داشته باشد. یک اکتیویتی دیگر برای compose کردن ایمیل، و یک اکتیویتی دیگر برای خواندن ایمیل داشته باشد. در این آموزش برنامه نویسی اندروید می خواهیم با اکتیویتی ها بیشتر آشنا شویم.

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

  • onCreate(): اولین تابعی که پس از ساخت اکتیویتی اجرا می شود.
  • onStart(): این تابع زمانی اجرا می گردد که اکتیویتی برای کاربر قابل روئیت است.
  • onResume(): این تابع زمانی صدا زده می شود که کاربر با اپلیکیشن در تعامل است.
  • onPause():یک اکتیویتی Pause شده قابل دریافت تعاملات با کاربر نمی باشد و همچنین قابل اجرا کردن کد نمی باشد و زمانی اکتیویتی جاری به حالت Pause درآمد می توان به اکتیویتی قبلی برگشت.
  • onStop(): این تابع زمانی فراخوانی می گردد اکتیویتی دیگر در حال اجرا می باشد.
  • onDestroy(): این تابع قبل از نابود شدن اکتیویتی توسط سیستم اجرا می گردد.
  • onRestart(): این تابع زمانی فراخوانی می گردد که اکتیویتی پس از Stop شدن Restart می شود.

۲یک مثال: این مثال شما را به روش ساده و قدم به قدم با چرخه حیات یک اکتیویتی در برنامه اندروید آشنا می کند. در ادامه مراحل تغییر پروژه Hello World Example که در بخش قبل توضیح دادیم را خدمتتان عرض می کنم.

  • شما باید از Eclipse IDE جهت ساخت اپلیکیشن پیشفرض Hello World Example اندرویدی که در بخش قبل توضیح دادیم استفاده کنید.
  • تغییراتی در Main activity که در فایل MainActivity.java قرار دارد را طبق کد های زیر اعمال می کنیم.

مرحله سوم: مانند بقیه برنامه ها آن را اجرا کنید.

در ادامه محتوای فایل MainActivity.java در آدرس src/com.example.helloworld/MainActivity.java را مطابق با نمونه کدهای زیر تغییر دهید. این فایل شامل تمام روش های اصلی چرخه عمر است Log.d() روشی برای استفاده از پیام است و در قسمت Logcat اطلاعات چاپ می شوند.

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. */

یک کلاس اکتیویتی تمام کامپوننت های UI را که در فایل XML قابل رویت است را پشتیبانی می کند فایلهای XML در پروژه های اندرویدی در پوشه مسیر res/layout قرار دارند.

۳تکه کد زیر کامپوننت های UI مورد نظر از مسیر res/layout/activity_main.xml بارگزاری می کند.

setContentView(R.layout.activity_main);

۴یک اپلیکیشن می تواند یک یا چند اکتیویتی داشته باشد. هر اکتیویتی که شما در برنامه استفاده می کنید باید در فایل AndroidManifest.xml معرفی گردد و اکتیویتی اصلی (پیشفرض) اپلیکیشن شما باید در manifest با <intent-filter> مطابق نمونه کد زیر تعریف گردد.

<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="15" />
   <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>

پروژه Hello World را اجرا کنید، فرض بر این است که AVD شما از قبل ساخته شده است و محیط شما کاملا آماده است برای اجرای برنامه از Eclipse استفاده کنید، روی یکی از پروژه ها در قسمت اکتیویتی ها رفته و روی دکمه RUN و یا دکمه در toolbar کلیک کنید Eclipse، اپلیکیشن شما را روی AVD نصب و اجرا می کند و می توانید ببینید که همه چیز خوب پیش رفته است یا نه و اینکه می توانید از طریق پنجره LogCat وضعیت.

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