Activity ها در اندروید
Activity یک صفحه نمایش با یک رابط کاربری مانند یک Window و یا Frame در جاوا است. Activity اندروید یک زیر کلاس از کلاس ContextThemeWrapper می باشد.
چرخه حیات Activity
اگر شما با زبان C ، زبان C++ و یا Java کار کرده باشید، می دانید که برنامه شما باید از تابع main() شروع به فعالیت کند. در سیستم اندروید نیز روشی شبیه به آن وجود دارد یعنی برنامه اندرویدی در یک activity با فراخوانی متد onCreate() شروع به کار می کند. در اندروید یک دنباله از متد های callback وجود دارد که فعالیت را شروع می کنند و یک دنباله دیگر نیز وجود دارد که فعالیت را از بین می برد. گفته های بالا در نمودار زیر نشان داده شده اند:
کلاس Activity فراخوانی های زیر را به مشابه رویداد تعریف می کند. شما نیازی به پیاده سازی همه متد های callback ندارید. با این حال، مهم است که شما هر کدام را درک کنید و آن هایی را پیاده سازی کنید که اطمینان دارید برنامه شما به نحوی که کاربران انتظار دارند رفتار می کنند.
ردیف | توضیحات |
1 | onCreate() این اولین متد callback است و زمانی که activity برای اولین بار ایجاد می شود، فراخوانی می شود. |
2 | onStart() این متد زمانی فراخوانی می شود که activity برای کاربر قابل مشاهده باشد. |
3 | onResume() این متد زمانی فراخوانی می شود که کاربر شروع به تعامل با برنامه می کند. |
4 | onPause() activity متوقف شده ورودی کاربر را دریافت نمی کند و نمی تواند هیچ کدی را اجرا کند و زمانی که فعالیت فعلی متوقف می شود و فعالیت قبلی از بین می رود، فراخوانی می شود. |
5 | onStop() این متد زمانی فراخوانی می شود که دیگر activity برای کاربر قابل مشاهده نباشد. |
6 | onDestroy() این متد قبل از اینکه activity توسط سیستم تخریب شود، فراخوانی می شود. |
7 | onRestart() این متد زمانی فراخونی می شود که activity پس از متوقف شدن، دوباره شروع می شود. |
مثال
این مثال از طریق مراحل ساده، چرخه فعالیت یک برنامه کاربردی اندروید را به شما نشان می دهد. برای تغییر برنامه اندرویدی که در بخش “مثال ساده در اندروید استودیو” ایجاد کردیم، مراحل زیر را دنبال کنید.
مرحله | توضیحات |
1 | شما از نرم افزار Android studio برای ایجاد یک برنامه اندرویدی استفاده می کنید و سپس آن را به عنوان HelloWorld تحت یک بسته com.example.helloworld نامگذاری می کنید. |
2 | فایل MainActivity.java را مانند آنچه که در زیر توضیح داده شده است، تغییر دهید. سایر فایل ها را تغییر ندهید. |
3 | برنامه را اجرا کنید تا شبیه ساز اندروید راه اندازی شود و نتیجه تغییرات انجام شده در برنامه را تأیید کنید. |
در زیر محتوای اصلاح شده فایل src/com.example.helloworld/MainActivity.java را مشاهده می کنید. این فایل همه متد های چرخه های حیاتی برنامه را شامل می شود. متد Log.d() برای تولید پیام های Log استفاده می شود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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 تمامی اجزای رابط کاربری را که در در فایل XML موجود در مسیر res/layout قرار دارد، بارگذاری می کند. دستور زیر اجزاری رابط کاربری را از فایل res/layout/activity_main.xml بارگذاری می کند:
1 | setContentView(R.layout.activity_main); |
یک برنامه می تواند بدون هیچ محدودیتی، شامل یک یا چند activity باشد. هر یک از activity هایی که در برنامه تان تعریف می کنید، باید در فایل AndroidManifest.xml اعلام شود. همچنین activity های اصلی برنامه که بعد از اجرای برنامه شروع می شوند، با استفاده از تگ <intent-filter> مشخص می شود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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 نمایش داده شود باید یکی از activity های موجود را به عنوان activity اصلی انتخاب کنید.
خروجی Log برای Activity
برنامه Hello World اصلاح شده را اجرا کنید. ما فرض می کنیم شما AVD (Android Virtual Device) خود را حین تنظیم محیط برنامه نویسی اندروید ایجاد کرده اید. به منظور اجرای برنامه در اندروید استودیو، یکی از فایل های activity برنامه را باز کنید سپس بر روی نماد اجرا کلیک کنید. اندروید استودیو این برنامه را در AVD نصب کرده و آن را اجرا می کند، در نهایت اگر همه چیز به درستی تنظیم شده باشد، یک پنجره شبیه ساز نمایش داده خواهد شد و می توانید در پنجره LogCat اندروید استودیو پیام های Log را مشاهده کنید:
1 2 3 | 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 |
اگر بر روی دکمه قفل صفحه در شبیه ساز اندروید کلیک کنیم ، پیام های تولید شده در پنجره LogCat را مشاهده می کنیم:
1 2 | 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 |
حال صفحه خود را در شبیه ساز اندروید باز کنید و پیام های جدیدی را که در پنجره LogCat ایجاد شده اند را مشاهده کنید:
1 2 | 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 باشید:
1 2 3 | 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 |
هیچ نظری ثبت نشده است