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

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

 

اگر با زبان های برنامه نویسی c، c++ یا جاوا کار کرده باشید، پس باید دیده باشید که برنامه شما از تابع یا متد main() شروع می شود. به همین شکل اندروید هم برنامه را در یک اکتیویتی با فراخوانی متد onCreate() آغاز می کند. توالی ای از متد ها وجود دارند که یک اکتیویتی را آغاز کرده و تولی ای از متد ها وجود دارند که به یک اکتیویتی پایان می دهد. دیاگرام چرخه اجرا یا لایف سایکل (life cycle) یک اکتیوتی را در شکل زیر می توانید ببینید.
 چرخه اجرای اندروید life cycle

 

کلاس اکتیویتی متدهای زیر را برای رویدادهای مختلف تعریف کرده است. نیازی نیست که همه متدها را در اکتیویتی خود پیاده سازی کنید. به هر حال مهم است که هر کدام از متدها را درک کرده و آنهایی که برنامه تان به آن نیاز دارد را پیاده سازی کنید.

 

شماره متد و توضیحات
۱ onCreate()

این متد زمانی که اکتیوتی ایجاد می شود فراخوانی می شود.

۲ onStart()

این متد هر دفعه که اکتیوتی برای کاربر نمایش داده می شود فراخوانی می شود.

۳ onResume()

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

۴ onPause()

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

۵ onStop()

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

۶ onDestroy()

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

۷ onRestart()

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

 

مثال

این مثال با چند قدم ساده، چرخه اجرای اکتیوتی را به نشان می دهد. قدم های زیر را دنبال کنید تا اپلیکیشن اندرویدی که در آموزش Hello World ایجاد کردیم را ویرایش کنیم.

گام توضیح
۱ همانطور که در مثال Hello World توضیح داده شد، در اندروید استدیو یک پروژه اپلیکیشن اندروید ایجاد کنید و نام آن را Hello World و پکیج آن را com.example.helloworld قرار دهید.
۲ فایل  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");
   }
}

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

setContentView(R.layout.activity_main);

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

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app2app.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 یا دسته بندی LAUNCHER برای اکتیویتی اصلی تعریف نشود، آیکن اپلیکیشن در صفحه برنامه های گوشی نشان داده نمی شود.

اجازه بدهید اپلیکیشن تغییر داده شده Hello World را اجرا کنیم. برای اجرای اپلیکیشن، در اندروید استدیو  یکی از فایل های اکتیویتی پروژه را باز کنید و بر روی آیکن Run دکمه Run که در تولبار قرار دارد کلیک کنید. اندروید استدیو اپلیکیشن را بر روی گوشی نصب کرده، و اگر همه ی کارها را درست انجام داده باشید، اپلیکیشن را در صفحه گوشی و پیام های زیر را در پنجره LogCat اندروید استدیو خواهید دید.

۰۸-۲۳ ۱۰:۳۲:۰۷٫۶۸۲ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onCreate() event
۰۸-۲۳ ۱۰:۳۲:۰۷٫۶۸۳ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onStart() event
۰۸-۲۳ ۱۰:۳۲:۰۷٫۶۸۵ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onResume() event

پنجره logcat اندروید استدیو

 

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

۰۸-۲۳ ۱۰:۳۲:۵۳٫۲۳۰ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onPause() event
۰۸-۲۳ ۱۰:۳۲:۵۳٫۲۹۴ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onStop() event

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

 ۰۸-۲۳ ۱۰:۳۴:۴۱٫۳۹۰ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onStart() event 08-23 10:34:41.392 4480-4480/com.example.helloworld D/Android :: The onResume() event 

حالا دکمه Back دکمه Back  گوشی را بزنید که این کار باعث نمایش پیام های رویداد زیر در LogCat شده و چرخه اجرای اکتیویتی برای یک اپلیکیشن اندروید را به صورت کامل مشاهده کرده اید.

۰۸-۲۳ ۱۰:۳۷:۲۴٫۸۰۶ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onPause() event
۰۸-۲۳ ۱۰:۳۷:۲۵٫۶۶۸ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onStop() event
۰۸-۲۳ ۱۰:۳۷:۲۵٫۶۶۹ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onDestroy() event

امید فرجی

سلام، امید فرجی هستم از همدان. بیشتر از 7 سال میشه که در حوضه برنامه نویسی جاوا و اندروید فعالیت دارم و در این مدت پروژه های تجاری مختلفی انجام دادم. همچنین از سال 91 سایت آموزش تخصصی جاوا را راه اندازی کردم و در خدمت شما هستم. امیدوارم مفید بوده باشم. برای سفارش پروژه هاتون باهام تماس بگیرید.

شما ممکن است این را هم بپسندید

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

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

اگر به دنبال پروژه های آماده هستید از فروشگاه ما دیدن کنید رد کردن