Activities, Fragments و Intents

Activities, Fragments و Intents

بسم الله الرحمن الرحیم

Activities, Fragments و Intents

فصل دوم- بخش دوم

در پایان این فصل  با موارد زیرآشنا می شود

  •    چرخه ی زندگی(Life Cycle ) یک Activity
  •     آشنای با Fragment  ها و  شخصی سازی UI
  •     اعمال Style  ها  و  Theme  ها  بر روی  UI
  •     شرح می دهیم که   چه طور  یک Activity  را  مانند  Dial g Wind ws  نمایش دهیم
  •     با مفهوم Intent  ها آشنا می شویم.
  •     استفاده از شی ( bject ) Intent  برای  لینک بین Activity  ها
  •     فهمیدن اینکه  intent filter  ها چگونه به شما کمک  می کند تا  به صورت دلخواه با دیگر Activity  ها  ارتباط برقرا  کنید
  •     نمایش Alert  ها  به  کاربران با استفاده از notificati n  ها

در  فصل  اول شما  یاد گرفتید  که یک activity   پنجره ا ی است شامل تمام Ui  ها  برنامه های کاربردی  شما می  باشد. یک برنامه ی کاربردی می تواند یک  یا بیشتر  Activity  داشته باشد. هدف اصلی  یک Activity   ارتباط(interact) با  کاربر می باشد.

activity  برای یک زمان در  صفحه نمایش  ظاهر می شود  و در  لحظه دیگر  مخفی می باشد یک activity  در  حالت های مختلف  قرار می گیرد. که  قرار گرفتن در حالت های  مختلف را چرخه ای زندگی(Life Cycle) می گویند. فهمیدن چرخه ی زندگی یک activity  امر حیاتی است زیرا به شما  کمک می کند  تا  مطمئن شوید  برنامه کاربردی به درستی کار می کند.

اندروید 4 علاوه بر پشتیبانی  از ویژگی های اندروید 3  دارای  ویژگی جدیدی  می باشد به نام :Fragment   برای اینکه  مفهوم Fragment  را به خوبی  متوجه شوید   فرض کنید که Fragment  ها  Acitivity  ها  کوچکی هستند که می توانیم در یک Activity  گروه بندی کنیم.

در این فصل شما با  activity  ها و  Fragment ها آشنا می شوید.صرف نظر از activity  ها  مفهوم اصلی دیگر در اندروید intent می باشد. یک Intent  به طور اساسی یک کلاس  می باشد که activityهای متفاوت  دیگر را  قادر می سازد که با یکدیگر به صورت یک پارچه  باهم کار کنند.  در فصل های بعدی شما یاد می گیرید  که چگونه  برنامه  های از پش ساخته سیستم عامل اندروید می توانند  با هم  کار کنند.

بسم الله الرحمن الرحیم

Activities, Fragments و Intents

فصل دوم- بخش دوم

در پایان این فصل  با موارد زیرآشنا می شود

  •    چرخه ی زندگی(Life Cycle ) یک Activity
  •     آشنای با Fragment  ها و  شخصی سازی UI
  •     اعمال Style  ها  و  Theme  ها  بر روی  UI
  •     شرح می دهیم که   چه طور  یک Activity  را  مانند  Dial g Wind ws  نمایش دهیم
  •     با مفهوم Intent  ها آشنا می شویم.
  •     استفاده از شی ( bject ) Intent  برای  لینک بین Activity  ها
  •     فهمیدن اینکه  intent filter  ها چگونه به شما کمک  می کند تا  به صورت دلخواه با دیگر Activity  ها  ارتباط برقرا  کنید
  •     نمایش Alert  ها  به  کاربران با استفاده از notificati n  ها

در  فصل  اول شما  یاد گرفتید  که یک activity   پنجره ا ی است شامل تمام Ui  ها  برنامه های کاربردی  شما می  باشد. یک برنامه ی کاربردی می تواند یک  یا بیشتر  Activity  داشته باشد. هدف اصلی  یک Activity   ارتباط(interact) با  کاربر می باشد.

activity  برای یک زمان در  صفحه نمایش  ظاهر می شود  و در  لحظه دیگر  مخفی می باشد یک activity  در  حالت های مختلف  قرار می گیرد. که  قرار گرفتن در حالت های  مختلف را چرخه ای زندگی(Life Cycle) می گویند. فهمیدن چرخه ی زندگی یک activity  امر حیاتی است زیرا به شما  کمک می کند  تا  مطمئن شوید  برنامه کاربردی به درستی کار می کند.

اندروید 4 علاوه بر پشتیبانی  از ویژگی های اندروید 3  دارای  ویژگی جدیدی  می باشد به نام :Fragment   برای اینکه  مفهوم Fragment  را به خوبی  متوجه شوید   فرض کنید که Fragment  ها  Acitivity  ها  کوچکی هستند که می توانیم در یک Activity  گروه بندی کنیم.

در این فصل شما با  activity  ها و  Fragment ها آشنا می شوید.صرف نظر از activity  ها  مفهوم اصلی دیگر در اندروید intent می باشد. یک Intent  به طور اساسی یک کلاس  می باشد که activityهای متفاوت  دیگر را  قادر می سازد که با یکدیگر به صورت یک پارچه  باهم کار کنند.  در فصل های بعدی شما یاد می گیرید  که چگونه  برنامه  های از پش ساخته سیستم عامل اندروید می توانند  با هم  کار کنند.

Activity  ها

درفصل قبل شما یاد گرفتید که چگونه می توان یک activity  ایجاد کرد.برای ساخت یک activity  شما یک  کلاس جاوا ایجاد کردید که از کلاس پایه) Activity  مشتق  (یا در جاوا به آن  Extends می گویند ) شده بود.

package com.myandroid.helloandroid;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

کلاس activity شما قسمت های  Ui را که یک فایل XML می باشدرا بارگزاری  (Load) می کند. این فایل Xml در پوشه Res\layout می باشد.

شما Ui ‌ را از فایل Activity_main.Xml بارگزاری می کنید.

setContentView(R.layout.activity_main);

هر activity  که شما در برنامه استفاده می کنید باید در فایل  Androidmainfest.xml تعریف شود.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myandroid.helloandroid"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.myandroid.helloandroid.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

کلاس پایه Activity ی سری از  Event  ها را تعریف می کنند که چرخه زندگی یک activity را کنترل می کنند. کلاس activity

  Event های زیر را تعریف می کند:

  •     onCreate(): زمانی فراخوانی می شود که activity  برای اولین بار ایجاد شده است
  •     onStart(): زمانی  فراخوانی می شود که activity  به  کاربر نمایش داده می شود.
  •     onResume(): زمانی اجرا  می شود که activity  با کاربر در تقابل(Intractive) است
  •     onPause(): زمانی  اجرا می شود که  activity  جاری به جالت Pause برورد و activity  قبلی به حالت Onresume  برورد  فراخوانی می شود.
  •     onStop(): زمانی فراخوانی می شود که activity  برای مدا طولانی به کاربر نمایش داده نمی شود.
  •     onDestroy(): زمانی فراخوانی می شود که Activity   به کلی از بین برود. چه به وسیله کاربر و چه به وسیله سیستم به دلیل کمبود حافظه.
  •     onRestart(): زمانی فراخوانی می شود که  activity  از حالت Stop دوباره راه اندازی می شود.

به طور پیش فرض محتوای activity  در  رویداد onCreate() ایجاد  می شود.

در شکل زیر چرخه زندگی یک activity  از زمانی که شروع می ود وتا پایان نمایش داده شده است.

چرخه زندگی Activity

بهترین راه برای فهمیدن چرخه زندگی یکactivity  عنوان آن  با یک مثال می باشد.

درون Eclipse  یک  پروژه با نام Activity101 ایجاد کنید.

ودر فایل \MainActivity.java کد های زیر  را  وارد کنید.

 

package com.myandroid.activity101;
import android.R.string;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
String tag="LifeCycle" ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(tag, "In the onCreate() event");
}
public void onStart()
{
super.onStart();
Log.d(tag, "In the onStart() event");
}
public void onRestart()
{
super.onRestart();
Log.d(tag, "In the onRestart() event");
}
public void onResume()
{
super.onResume();
Log.d(tag, "In the onResume() event");
}
public void onPause()
{
super.onPause();
Log.d(tag, "In the onPause() event");
}
public void onStop()
{
super.onStop();
Log.d(tag, "In the onStop() event");
}
public void onDestroy()
{
super.onDestroy();
Log.d(tag, "In the onDestroy() event");
}
}

برنامه را ذخیره کنید.

برای اجرای برنامه کلید  F11 را فشار دهید.

زمانی که برنامه برای اولین بار  اجرا می شود در پنچره LogCat  چیزی شبیه زیر مشاهده  می کنید.

چرخه زندکی Activity در اندروید

زمانی که دکمه Back در Android Emulator  کلیک کنید. موارد زیر در logCat  چاپ می شود.

چرخه زندکی Activity

کلید Home  را چند ثانیه نگه دارید تا activity  های اجرا به شما نمایش داده شوند

چرخه زندگی Activity

در logCat  مواردزیر چاپ می شود

چرخه زندگی Activity

دکمهphone را فشار دهید   activity به حالت background می رود یعنی برنامه هنوز در حافظه می باشد . در logCAt  موارد زیر چاپ می شود.

نکته اینجاست که  رویداد onDestroy() اجرا نشد مشخص می کند که هنوز برنامه در حافظه می باشد.

دوباره به برنامه برگردید.

چرخه زندکی  Acitivyt

onRestart() اجرا می شود و به دنبال آن     onStart()    و    onResume() اجرا می شوند.

همان طور که در این مثال ساده  دیدید زمانی که  بر روی دکمه Back   را زدیم activity    از بین می رود destroyed   می شود

 

توضیحات

همان طور که در این مثال  مشاهده کردید زمانی که دکمهback  را  می زنیم  activity destroyed   می شود.

 از اینرو  وضیعت  activity  جاری را از دست خواهیم داد بنابراین شما باید کد های را به برنامه اضافه کنید که از  وضعیت جاری activity    را نگه داری کند.(در فصل سوم شرح می دهیم.)در این جا نکته ای اصلی متد onpuse() می باشد که د ر دو حالت رخ می دهد. زمانی که دکمه back  را فشا ر می دهیم آن به حات destroyed  می شود. و زمانی که  آن در حالت  Backgrond  می باشد.

زمانی که یک activity  اجرا می شود  متدهای  onStart()و onResume() همیشه اجرا می شود.

صرف نظر ا اینکه یک activity  تازه ایجاد شده یا یک activity   در background بوده و حال اجرا شده است در هردو حالت  این متد ها اجرا میشوند.

وزمانی که یک activity برای اولین بار اجرا می شود متد OnCreate() فرا خوانی می شود.

 

شما از مثال  قبل می توانید موارد زیر را  استنتاج کنید:

  • متد onCreate()  زمانی که می خواهید یک نمونه از  یک شی object   در برنامه ایجاد و  استفاده کنید  شی مورد  نظر را در  این  متد  استفاده  کنید
  • متد onResume() برای اجرای هر سرویس  و کد دلخواهی  که شما  نیاز دارید اجرا بشود  زمانی که activity  در حالت foreground  می باشد  استفاد می شود.
  • متد Onpuse() برای Stop کردن  هر سرویس و کد دلخواهی که شما نیاز ندارید  اجرا شود, زمانی  که activity در  حالت foreground می باشد استفاده می شود.
  • onDrstroyed() برای آزاد کردن  منابع  قبل از اینکه activity() از بین برود  استفاده می شود.

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس