no-img
سامنتا

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

یادگیری
تمرین
آینده سازی

سامنتا
دانلودهای ویژه
اطلاعیه های سایت

ادامه مطلب

اکتیوتی ها در اندروید
zip
اردیبهشت ۱۸, ۱۳۹۵
دانلود آموزش های فارسی رایگان در کانال سامنتا

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


 

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

اکتیویتی های اندرویدی نوعی کلاس هستند که از کلاس ContextThemeWrapper ارث بری میکنند 
 

فایل ویدیویی این آموزش بصورت فارسی و با کیفیت بالا قرار داده شد لطفا از لینک زیر دانلود کنید : 

۳,۵۰۰ تومان – خرید

 

اگر شما با زبان های برنامه نویسی مثل C , C++ ,java کار کرده باشید حتما" میدانید که این زبانها هنگام شروع از یک متدی مانند main() شروع میکنند . در برنامه نویسی اندروید نیز چنین هست با این تفاوت که در اندروید برنامه با یک Activity و از متد onCreate()  آن شروع میکند . 

در هر اکتیویتی در برنامه نویسی اندروید سلسه مراتبی برای اجرای متدهای درونی این کلاس وجود دارد که به این سلسه مراتب اصطلاحا" LifeCycle یا چرخه ی حیات میگویند 

در تصویر زیر چرخه ی حیات یک اکتیویتی را مشاهده میکنید : 

چرخه ی حیات اکتیویتی

چرخه ی حیات اکتیویتی

هر اکتیویتی اندرویدی از متدههای پیشفرض استفاده میکند و شما نیاز به فراخوانی همه ی آنها نیستید . بعضی از آنها اجباری هستند و برخی بصورت اختیاری هستند که در صورت نیاز میتوانید از طریق محیط برنامه نویسی خود ، آنها را override کنید . 

به هر حال دانستن و آموزش متدهای هر اکتیویتی بسیار مفید خواهد بود تا در آینده در صورت نیاز راحت تر بتوانید درک درستی از متدهای اکتیویتی داشته باشید :

 

 

متدتوضیحات
onCreate()این اولین متد یک اکتیویتی هست که با شروع اکتیویتی اجبارا" اجرا میشود . نوشتن این متد یکی از ضرورات برنامه نویسی اندروید هست .
onStart()این متد دقیقا" زمانی اجرا میشود که اکتیویتی روی صفحه نمایش ، به نمایش گذاشته میشود
onResume()این متد دقیقا" زمانی اجرا میشود که کاربر با برنامه اولین تعامل را برقرار بکند یعنی اکتیویتی را روی صفحه ببیند
onPause()این متد زمانی اجرا میشود که اکتیویتی هیچ ورودی را از کاربر دریافت نکند . هیچ کدی را اجرا نکند . و به اصطلاح به حالت Pause درآید
onStop()این متد دقیقا" زمانی اجرا میشود که اکتیویتی از صفحه ی نمایش محو میشود
onDestroy()این متد زمانی اجرا میشود که اکتیویتی توسط سیستم  نابود شود 
onRestart()این متد زمانی اجرا میشود که قبل از Stop شدن اکتیویتی مجددا اجرا شود 

مثال برای متد های اکتیویتی در برنامه نویسی اندروید 

این مثال چرخه ی حیات اکتیویتی را به روش ساده ای برای شما نشان میدهد . مراحل زیر را طی کنید ، مراحل زیر را برای مثال hello world که قبلا ساختیم ، طی کنید : 

مرحلهتوضیحات
۱در مرحله ی اول شما محیط توسعه ی خود را باز کنید و یک پروژه به نام hello world با نام بسته ی com.example.helloworld  بسازید 
۲اکتیویتی اصلی برنامه را MainActivity.java نام گذاری کنید و باقی فایل ها را همانطور باقی بگذارید
۳برنامه را اجرا کنید تا در امولاتور شما نصب و اجرا گردد 

در زیر محتویات فایل اکتیویتی اصلی که نامش را تغییر دادیم قرار دارد . این فایل باید در آدرس src/com.example.helloworld/MainActivity.java  باشد . 

کدهای زیر دارای تمام متدهای اساسی ، چرخه ی حیات یک اکتیویتی  اندروید میباشد . متد  Log.d() برای تولید پیام های سیستمی هست که فقط در logcat محیط توسعه ی شما قابل مشاهده توسط توسعه دهنده میباشد . 

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 فراخوانی میکند ، کد زیر فایل layout موجود در res/layout/activity_main.xml  را فراخوانی میکند :

setContentView(R.layout.activity_main);

هر برنامه ی اندرویدی بسته به نیاز خودش میتواند بدون هیچ محدودیتی اکتیویتی داشته باشد . هر اکتیویتی که برای برنامه میسازید حتما باید درون فایل AndroidManifest.xml معرفی کنید تا برنامه اکتیویتی های شما را بشناسد.

همچنین شما اکتیویتی اصلی برنامه ی را باید از طریق <intent-filter> معرفی کنید تا برنامه ی شما از آن اکتیویتی شروع به فعالیت بکند 

کدهای زیر مربوط به یک مانیفست میباشد : 

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
</manifest>

اگر چنانچه شما کدهای android.intent.action.MAIN و android.intent.category.LAUNCHER را برای هیچ یک از اکتیویتی های خود تعریف نکنید بدین معنی که هیچ یک از اکتیویتی های شما اکتیویتی اصلی برنامه نباشد که برنامه از آنجا شروع کند ، بعد ازنصب برنامه هیچ آیکونی برای برنامه ی شما در لیست برنامه ها ، ظاهر نخواهد شد . 

بیایید برگردیم به مثال Hello World که در بالا تغییرااتی را روی این مثال اعمال کردیم . یک ماشین مجازی اندروید روی محیط خود بسازید (Genymotion یا ماشین مجازی AVD ) سپس برنامه را اجرا کنید . چیزی که در LogCat مشاهده خواهید کرد بدین شکل خواهد بود : 

۰۷-۱۹ ۱۵:۰۰:۴۳٫۴۰۵: D/Android :(866): The onCreate() event
۰۷-۱۹ ۱۵:۰۰:۴۳٫۴۰۵: D/Android :(866): The onStart() event
۰۷-۱۹ ۱۵:۰۰:۴۳٫۴۱۵: D/Android :(866): The onResume() event

حالا شما روی آیکون قرمز رنگ روی ماشین مجازی (همان دکمه که مخصوص قطع مکالمه روی گوشی های اندرویدی هست ) کلیک کنید . باید در LogCat برنامه با نوشته های زیر برخورد کنید : 

۰۷-۱۹ ۱۵:۰۱:۱۰٫۹۹۵: D/Android :(866): The onPause() event
۰۷-۱۹ ۱۵:۰۱:۱۲٫۷۰۵: D/Android :(866): The onStop() event

اگر درون ماشین مجازی اندروید خود ، به منوی برنامه ها بروید و مجددا" برنامه را باز کنید با نوشته های زیر درون LogCat مواجه خواهید شد : 

۰۷-۱۹ ۱۵:۰۱:۱۳٫۹۹۵: D/Android :(866): The onStart() event
۰۷-۱۹ ۱۵:۰۱:۱۴٫۷۰۵: D/Android :(866): The onResume() event

و اگر مجددا" از درون برنامه دکمه ی Back یا بازگشت روی دستگاه اندروید را بزنید LogCat نوشته های زیر را چاپ خواهد کرد : 

۰۷-۱۹ ۱۵:۳۳:۱۵٫۶۸۷: D/Android :(992): The onPause() event
۰۷-۱۹ ۱۵:۳۳:۱۵٫۵۲۵: D/Android :(992): The onStop() event
۰۷-۱۹ ۱۵:۳۳:۱۵٫۵۲۵: D/Android :(992): The onDestroy() event

تمام رشته هایی که در LogCat به نمایش در آمده بود برای تست کردن چرخه ی حیات یک اکتیویتی توسط خود ما نوشته شده بودند با تامل روی تصویر چرخه ی حیات و همچنین خواندن متون بالا با دقت و حوصله و همچنین تست برنامه از طریق محیط واقعی برنامه نویسی اندروید توسط خود شما باعث میشود که درک درستی از چرخه ی حیات به دست آورید که سنگ بنای مهم برنامه نویسی شما خواهد بود 

 



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

تیم سامنتا 72 نوشته در سامنتا دارد . مشاهده تمام نوشته های

دیدگاه ها


پاسخ دهید

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