activity
اگر شما با زبان برنامه نویسی C، C ++ و یا Java کار کرده باشد، حتما مشاهده کرده اید که برنامه شما با تابع main () شروع می شود. روش مشابه ای، نیز در سیستم برنامه نویسی اندروید برای شروع activity وجود دارد که با فراخوانی onCreate () است. دنباله ای از روش های فراخوانی وجود دارد که فعالیت ها را شروع می کنند و دنباله ای از روش های فراخوانی نیز وجود دارد که فعالیت ها را از بین می برند، در نمودار زیر چرخه activity نشان داده شده است:
مطلب پیشنهادی: نکاتی در مورد ساختار و اجزای سیستم عامل اندروید
شما نیازی به پیاده سازی همه روش های فراخوانی ندارید. با این حال، مهم است که هر کدام را درک کنید و آنهایی را اجرا کنید که مطمئن باشد که برنامه همان طور که کاربران انتظار دارند عمل میکند.
فراخوان ها با توضیحات مربوطه | |
۱ |
onCreate() اولین فراخوان است و به عنوان اولین فعالیت ایجاد می شود. |
۲ |
onStart() این فراخوان زمانی اجرا می شود که فعالیتی برای کاربر قابل مشاهده باشد. |
۳ |
onResume() این فراخوان برای هنگامی است کاربر شروع به کار با برنامه می کند. |
۴ |
onPause() این فعالیت متوقف شده نام دارد، که نمی تواند ورودی کاربر را دریافت کند و همچنین نمی تواند هر کدی را اجرا کند. هنگامی فراخوانی می شود که activity فعلی متوقف شود و activity قبلی از سر گرفته می شود. |
۵ |
onStop() این فراخوان زمانی اجرا می شود که activity دیگر قابل مشاهده نیست. |
۶ |
onDestroy() این فراخوان قبل از activity توسط سیستم از بین می رود. |
۷ |
onRestart() این فراخوان زمانی اجرا می شود که activity بعد از متوقف شدن، دوباره شروع می شود. |
مثال
این مثال از طریق مراحل ساده چرخه activity برنامه را نشان می دهد. مراحل زیر را برای تغییر نرم افزار اندروید در مثال Hello World دنبال کنید:
مرحله | Description |
۱ | با استفاده از Android Studio یک برنامه اندروید ایجاد کنید و اسم آن را به عنوان HelloWorld تحت یک بسته com.example.helloworld نام گذاری کنید. همانطور که در مثال Hello World توضیح داده شد عمل کنید. |
۲ | تغییرات فایل اصلی MainActivity.java در زیر توضیح داده شده است. باقی فایل ها را بدن تغییر نگه دارید. |
۳ | برنامه را اجرا کنید تا شبیه ساز اندروید، برنامه را راه اندازی کند. نتیجه تغییرات انجام شده در برنامه را بررسی کنید. |
مطلب پیشنهادی: سازماندهی و دسترسی به منابع اندروید
در زیر محتوای فایل activity اصلی src/com.example.helloworld/MainActivity.java وجود دارد. این فایل شامل هر یک از روش های اساسی است. از روش Log.d () برای تولید پیام های ورودی استفاده شده است.
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"); } }
یک کلاس activity تمام اجزای UI را با استفاده از فایل XML موجود در پوشه Res/layout بارگیری می کند. دستور زیر اجزای UI را از فایل res/layout/activity_main.xml بارگذاری می کند.
setContentView(R.layout.activity_main);
یک برنامه می تواند یک یا چند activity را بدون محدودیت داشته باشد. هر activity که برای برنامهتان تعریف میکنید باید در فایل AndroidManifest.xml اعلام شود و activity اصلی برای برنامه شما باید در <intent-filter> اعلام شود که شامل عمل اصلی و LAUNCHER است ، که به شرح زیر:
<?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>
اگر هر یک از اعمال اصلی یا LAUNCHER برای یکی از فعالیت های شما اعلام نشده باشد، نماد برنامه در فهرست برنامه های صفحه اصلی ظاهر نخواهد شد.
بیایید سعی کنیم مثال Hello World را اصلاح کنیم. فرض را بر این میگذاریم که AVD را در حین انجام تنظیم محیط ایجاد کرده اید. برای اجرای برنامه باstudio Android، یکی از فایل های activity پروژه خود را باز کنید و روی نماد اجرا در نوار ابزار کلیک کنید. Android studio این برنامه را در AVD خود نصب می کند و آن را اجرا می کند و اگر همه موارد با تنظیمات و برنامه سازگار باشد، پنجره Emulator ظاهر می شود و شما باید پیام های ورودی زیر را در پنجره LogCat در Android studio ببینید.
۰۸-۲۳ ۱۰:۳۲:۰۷٫۶۸۲ ۴۴۸۰-۴۴۸۰/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 در android studio مانند زیر ایجاد می شود:
۰۸-۲۳ ۱۰:۳۲:۵۳٫۲۳۰ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onPause() event ۰۸-۲۳ ۱۰:۳۲:۵۳٫۲۹۴ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onStop() event
دوباره سعی کنید صفحه خود را در شبیه ساز اندروید باز کنید، پیام های رویدادهای بعدی که در پنجره LogCat در Android studio ایجاد می شود به شرح زیر است:
۰۸-۲۳ ۱۰:۳۴:۴۱٫۳۹۰ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onStart() event ۰۸-۲۳ ۱۰:۳۴:۴۱٫۳۹۲ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onResume() event
بعد، دوباره سعی کنید روی دکمه Back بر روی شبیه ساز اندروید کلیک کنید، پیام های رویدادهای بعدی در پنجره LogCat در Android studio ایجاد می شود. این مرحله چرخه عمر activity را برای یک برنامه اندروید تکمیل می کند.
۸-۲۳ ۱۰:۳۷:۲۴٫۸۰۶ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onPause() event ۰۸-۲۳ ۱۰:۳۷:۲۵٫۶۶۸ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onStop() event ۰۸-۲۳ ۱۰:۳۷:۲۵٫۶۶۹ ۴۴۸۰-۴۴۸۰/com.example.helloworld D/Android :: The onDestroy() event
منبع: tutorialspoint