Android 四大核心組件之Activity詳解

Activity 概念:

          應用程序中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監聽並處理用戶的事件做出響應。

Activity的三個狀態:

          運行狀態(顯示在主屏幕上,可見)、停止狀態(不可見)、暫停狀態(被其他的Activity遮蔽一部分)

Activity的生命週期 (7大方法):

          

Activity的操作:

            

1.配置屬性:Application有一個主的Activity來作爲入口,由它啓動其他的Activity

創建一個新的Activity,必須在配置文件中,申明一個Activity。

<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">

    <intent-filter>

        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />

    </intent-filter>

</activity>

android.intent.action.MAIN 表示此Activity爲App的入口;

android.intent.category.LAUNCHER則表示此入口爲系統的圖標或快捷方式啓動;


但App並不只能有一個入口,也有可能是由intent-filter打開方式啓動app。

 

創建一個簡單的Activity

1.         第1步:創建繼承於Activity的子類,作爲實現Activity的邏輯代碼。

2.         第2步:在AndroidManifest.xml文件中在Application節點內創建以下片斷,一般用IDE創建時,都已經自己生成對應的XML。

<activity android:name=".activity.Second"></activity>

3.         第3步:在主Activity中調用新的Activity。

startActivity(new Intent(this,Second.class));

一般建議調用Activity的方法由新的Activity(Second類)的靜態方法來提供,而調用時,只需傳遞入對應的參數,由新的Activity來組成Intent進行調用,這樣可以把邏輯都放於對應的Activity,代碼會顯得更加清晰。如以下代碼(摘自K-9 Mail開源代碼:

public static void actionSettings(Context context, Account account) {

                   //在這裏組裝一個Intent

        Intent i = new Intent(context, AccountSettings.class);

                   //加入對應需要的數據,放於Intent裏面

        i.putExtra(EXTRA_ACCOUNT, account.getUuid());

                   //啓動對應的Activity

        context.startActivity(i);

    }

 

Activity的顯示順序隊列遵循棧的模型

後入先出,最前打開的Activity在最上面

在同一個app裏面每一個Activity被啓動後,原來的Activity將會被放入到 Activity返回順序棧 裏面,如圖(摘自Android網站):

1、  啓動主Activity,可能是用系統的圖標啓動,也可能是用Intent-filter啓動,此時Activity 1就被放入到 Activity返回順序棧中。

2、  當點擊“Start Activity 2”按鈕時,系統將拉起新的Activity 2,此時Activity 2將被放入到棧中;

3、  當點擊“Start Activity 3”按鈕時,系統將拉起新的Activity 3,此時Activity 3將被放入到棧中;

4、  當點擊返回按鈕時,系統將會把Activity 3退出,返回到Activity 2;

當Finish()的Activity將不會放入到隊列中

如圖:

1、  主Activity被拉起;

2、  主Activity拉起Activity 1,此時棧中顯示如2;

3、  當Activity 1 拉起 Activity 2後,調用了finish()方法,則Activity 1 將不會被放入到棧中,而是直接結束了生命週期,而Activity 2 則被放入棧中,當再次按返回鍵時,則返回到主Activity;

 

針對目前有許多的app需要按多次返回鍵後才能退出,有時還是在同一Activity界面出現多次,可以使用此方法進行解決,例如以下代碼:

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.custom);

        startActivity(new Intent(this,Second.class));

        finish(); //啓動後直接調用finish()方法結束生命週期

}


 


             


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章