آموزش ایجاد اکتیویتی (Activity) در اندروید و کار با اکتیویتی ها ، در قسمت دهم آموزش برنامه نویسی اندروید در ادامه آموزش قبل که در رابطه با اکتیویتی ها صحبت کردیم حال کار با اکتیویتی ها توضیح داده شده است ، یک اکتیویتی با تمام رویدادهای ایجاد کرده و اجرا میکنیم و همچنین روش کار آن را توضیح میدهیم.
توجه : برای مشاهده تصاویر در سایز اصلی بر روی آنها کلیک کنید.
برای ایجاد اکتیویتی میتوان یک اکتیویتی جدید با استفاده از کلاس جاوا ایجاد کرد و یا از اکتیویتی موجود در پروژه که هنگام ایجاد پروژه بوجود می آید استفاده کرد.
ما از پروژه Hello World که در آموزش قبل ایجاد کرده ایم استفاده میکنیم حال اگر بخواهیم یک اکتیویتی جدید با استفاده از کلاس جاوا ایجاد کنیم باید طبق تصویر زیر عمل کنیم
همانگونه که در تصویر فوق مشاهده میکنید با کلیک راست کردن برروی پروژه ای که میخواهیم برای آن اکتیویتی ایجاد کنیم سپس New و سپس انتخاب گزینه Class میتوان اقدام به ایجاد کلاس کرد.
پس از انتخاب گزینه Class پنجره زیر مشاهده میشود
در این قسمت میتوان ویژگی ها و خصوصیات کلاس را مشخص کرد که در این بخش تنها کافیست نام کلاس را وارد کرده و دکمه Finish را کلیک کنید و بقیه تنظیمات را به صورت پیش فرض رها کنید.
پس از ایجاد فایل کلاس جاوا خواهیم دید با نام Factivityy.java در مسیر src/com.exapleproject مربوط به پروژه ذخیره شده حال در کلاس کدهای زیر را تایپ میکنیم که شامل تمام رویدادهای اکتیویتی که توضیح داده شده است.
package com.example.project;
import android.app.Activity;
import android.os.Bundle;
public class Factivityy extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
نکته قابل توجه این است که پس از تعریف کلاس وکدنویسی های لازم باید حتما اکتیویتی خود را به manifest برنامه معرفی کنیم با کدنویسی به صورت زیر
<activity
android:name=".Factivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
همانگونه که مشاهده میکنید تنها کافی است قسمت Activity بخش android:name نام کلاسی باشد که ایجاد کردیم توجه کنید علامت . که قبل از نام اکتیویتی گذاشتیم اشاره به نام پکیج دارد و چون اکتیویتی ایجاد شده در همان پیجی است که فایل manifest در آن پکیج قرار دارد و این در حالی است که اگر پکیج کلاس با پکیج manifest متفاوت بود باید نام پکیج کلاس قبل از نام کلاس بیاید. این در حالیست که اگر کدنویسی اکتیویتی خود را درون فایل اکتیویتی پیش فرض پروژه قرار دهیم دیگر نیازی به تغییر manifest نیست چون به طور پیش فرض قسمت activity , manifest به اکتیویتی پیش فرض پروژه اشاره دارد.
حال میتوان برنامه را اجرا کرد (طبق روشی که در آموزش های قبل گفته شد) و قبل نمایش نتیجه, باید ماشین مجازی را در پنجره ای که نمایش داده میشود مشخص کنیم به شکل زیر
همانگونه که در تصویر فوق مشاهده میکنید پنجره انتخاب ماشین اندروید شامل دو قسمت Choose a running Android Device , Launch a new Android Virtual Device میباشد که در قسمت اول میتوان یکی از ماشین های درحال اجرا را انتخاب کرد در حالی که در قسمت دوم یک ماشین مجازی جدید که قابلیت پشتیبانی از برنامه را داشته باشد را انتخاب و اجرا میکنیم و در انتها نیز Ok را کلیک میکنیم و خواهیم دید که ماشین مجازی نمایش داده شده و بارگذاری میشود. حال باید به قسمت منو ماشین مجازی رفته فایل برنامه ه همنام پروژه است را پیدا کرده و کلیک میکنیم و نتیجه را به شکل زیر خواهیم دید
هنگامی که دکمه Back شبیه ساز را کلیک کنیم اکتیویتی از بین میرود و این نکته بسیار مهمی است چون باید مراقب بود تا اکتیویتی در حال اجرا از بین نرود که با نوشتن چند خط کد میتوان این دستور را داد که وضعیت اکتیویتی پس از نابودی از بین نرود و نگه داشته شود.
در این حالت دقت کنید که در هر دوصورت رویداد onPause() فراخوانی شده وقتی که اکتیویتی دیده نمیشود (به background میرود) و یا زمانی که کاربر کلید Back را زده و نابود میشود.
نکته دیگر در رابطه با اکتیویتی ها این است که همیشه موقع شروع یک اکتیویتی فارغ از اینکه یک اکتیویتی جدید باشد یا یک اکتیویتی را restore کنیم درهر دوصورت رویداد های onStart() و onResume() فراخوانی میگردد تنها تفاوت اینجاست زمانی که اکتیویتی را برای اولین بار اجرا میکنیم رویداد onCreate() نیز فراخوانی میگردد.
از توضیحات فوق چنین برداشت میکنیم که
نکته:
هرگاه برنامه ای تنها دارای یک اکتیویتی باشد و آن اکتیویتی نابود شود برنامه همچنان در حال اجرا در حافظه باقی می ماند.