فعالیت های اندروید

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

در صورتی که شما با زبان های برنامه نویسی C، C++ یا جاوا کار کرده باشید، دیده اید که برنامه شما با تابع main() شروع می شود. به صورت مشابه سیستم اندرویدی هم برنامه خود را با یک فعالیت (Activity) که با فراخوانی onCreate() اجرا می شود، شروع می کند. همانطور که در نمودار چرخه عمر فعالیت زیر نشان داده شده است مجموعه ای از متدهای callback وجود دارند که یک فعالیت را شروع می کنند و مجموعه ای از متدهای callback وجود دارند که یک فعالیت را قطع می کنند. (منبع عکس: android.com ).

 

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

Callback
توصیف
onCreate()
این اولین Callback است و زمانی که فعالیت برای اولین بار ایجاد میشود، فراخوانی می شود.
onStart()
این callback زمانی فراخوانی می شود که فعالیت به وسیله­ کاربر مشاهده می شود.
onResume()
این callback زمانی فراخوانی می شود که کاربر شروع به تعامل با اپلیکیشن می کند.
onPause
در اثر این callback، فعالیت متوقف شده، ورودی کاربر را دریافت نمی کند و نمی تواند هیچ کدی را اجرا کند. این callback در زمان توقف فعالیت فعلی و ادامه­ی فعالیت قبلی، فراخوانی می شود.
onStop()
این callback زمانی که یک فعالیت، دیگر به وسیله­ی کاربر قابل مشاهده نیست فراخوانی می شود.
onDestroy()
این callback قبل از، از بین رفتن فعالیت به وسیله­ی سیستم فراخوانی می شود.
onRestart()
این callback زمانی که فعالیت بعد از توقف، مجددا شروع به کار می کند، فراخوانی می شود.

مثال:

این مثال از طریق گام هایی ساده، چرخه حیات فعالیت های یک اپلیکیشن اندرویدی را به شما نشان میدهد. مراحل زیر را برای تغییر اپلیکیش اندرویدی ای که ما در فصل Hello World Example ایجاد کردیم، دنبال کنید.

مرحله
توصیف
1
شما باید از Eclipse IDE برای ایجاد یک اپلیکیشن اندرویدی استفاده کنید و همانطور که در مثال بخش Hello World Example شرح داده شد، آن را تحت پکیج com.example.helloworld، HelloWorld بنامید.
2
فایل فعالیت اصلی MainActivity.java را به صورتی که در ادامه توضیح داده شده است، تغییر دهید. باقی مانده­ی فایل را دست نخورده باقی بگذارید.
3
اپلیکیشن را برای راه اندازی امولاتور اندروید اجرا کنید و نتایج تغییرات ایجاد شده در برنامه را بررسی کنید.

در ادامه محتوای تغییر یافته­ ی فایل فعالیت اصلی 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");
   }
}

 

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

setContentView(R.layout.activity_main);

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

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tutorialspoint7.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <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 برای فعالیت های شما مشخص نشود، آنگاه آیکن مربوط به اپلیکیشن شما، در لیست اپلیکیشن ها در صفحه Home، ظاهر نمی شود.

اکنون می خواهیم که اپلیکیشن تغییر یافته­ ی Hello World! را، که در این قسمت آن را تغییر دادیم، اجرا کنیم. من فرض میکنم که شما در طول عملیات نصب محیط، AVD خود را ایجاد کرده باشید. برای اجرای اپلیکیشن از Eclipse، یکی از فایل های فعالیت پروژه خود را باز کنید و بر روی آیکن Run از نوار ابزار کلیک کنید. Eclipse، اپلیکیشن را بر روی AVD شما نصب می کند و در صورتی که همه چیز در مورد نصب و اپلیکیشن شما درست باشد، پنجره امولاتور (Emulator) را نمایش میدهد، و شما باید پیام های log (پیام های ثبت وقایع) زیر را در پنجره LogCat در Eclipse IDE ببینید.

08-23 10:32:07.682 4480-4480/com.example.helloworld D/Android :: The onCreate() event
08-23 10:32:07.683 4480-4480/com.example.helloworld D/Android :: The onStart() event
08-23 10:32:07.685 4480-4480/com.example.helloworld D/Android :: The onResume() event

 

در صورتی که بر روی دکمه Red بر روی امولاتور اندروید کلیک کنید، پیام های مربوط به رویدادهای زیر در پنجره LogCat در Eclipse IDE نمایش داده می شود.

08-23 10:32:53.230 4480-4480/com.example.helloworld D/Android :: The onPause() event
08-23 10:32:53.294 4480-4480/com.example.helloworld D/Android :: The onStop() event

 

در صورتی که بار دیگر بر روی دکمه Menu، بر روی امولاتور اندروید کلیک کنید، پیام های مربوط به رویدادهای زیر در پنجره LogCat در Eclipse IDE نمایش داده می شود.

08-23 10:34:41.390 4480-4480/com.example.helloworld D/Android :: The onStart() event
08-23 10:34:41.392 4480-4480/com.example.helloworld D/Android :: The onResume() event

 

پس از آن، اگر بر روی دکمه در امولاتور اندروید کلیک کنید، پیام های مربوط به رویدادهای زیر در پنجره LogCat در Eclipse IDE نمایش داده می شود و این کار چرخه حیات فعالیت را برای یک اپلیکیشن اندرویدی تکمیل می کند.
08-23 10:37:24.806 4480-4480/com.example.helloworld D/Android :: The onPause() event
08-23 10:37:25.668 4480-4480/com.example.helloworld D/Android :: The onStop() event
08-23 10:37:25.669 4480-4480/com.example.helloworld D/Android :: The onDestroy() event