《第一行代碼Android》學習總結第二章 Acitivity的生命週期與啓動模式

一、返回棧

    Android中使用Task任務來管理活動,一個任務就是一組存放在返回棧中的活動Activity的集合。

    系統總是將棧頂的Activity顯示給用戶。

二、Acitivity的四種狀態

1、運行狀態

    位於返回棧棧頂的活動Activity處於運行狀態。

2、暫停狀態

    活動Activity不在處於棧頂,但仍然可見。不可交互

3、停止狀態

    活動Activity不在處於棧頂,並且不可見。系統仍然會爲該活動Activity保存相應的狀態和成員變量。

4、銷燬狀態

    活動Activity從返回棧中移除。

三、Acitivity的生命週期與相關實踐

  •  

四、設置Acitivity爲對話框模式

AndroidMaifest.xml文件中修改<acitivity>標籤配置

android:theme=”@style/Theme.AppCompat.Dialog”

五、onSaveInstanceState()回調方法

該方法可以保證在Activity被回收前一定被調用,因此可以運用onSaveInstanceState()回調方法解決活動被回收時數據得不到保存的問題。

1、onSaveInstanceState()回調方法中存在一個Bundle類型參數,可以運用該參數的putString() ,putInt()等方法進行數據保存。

2、在Activity中的onCreate()方法中存在一個Bundle savedInstanceState參數,一般情況下爲null,但如果Acitivity在回收前運用onSaveInstanceState()回調方法保存了數據,則該參數會攜帶之前保存的所有數據。

六、Bundle與Intent綁定

Intent可以與Bundle一起綁定進行數據傳輸。

七、Acitivity的四種啓動模式

    可通過AndroidMaifest.xml文件中修改<acitivity>標籤配置android:launchMode屬性改變啓動模式。

    1、stardard(默認)

    2、singleTop

    3、singleTask

    4、singleInstance

八、Acitivity使用實踐技巧

1、如何根據當前界面判斷是哪個Acitivity

   1)新建BaseActivity類(不用在AndroidMaifest.xml中註冊)繼承自AppCompatActivity,並重寫onCreate()方法。

   2)onCreate()方法中加入       

 Log.d(“BaseActivity”,getClass().getSimpleName());

   3)讓其他Activity繼承自BaseActivity成爲所有Activity的父類。

2、從任意Acitivity退出程序

    運用專門一個集合類對所有活動進行管理:

     1)新建ActivityCollector類作爲活動管理器編寫addActivity()  removeActivity()  finishAll()等方法。

     2)在BaseActivity類中的onCreate()方法中調用ActivityCollector類的addActivity()方法,表明將正在創建的活動添加到活動管理器中。

        並在BaseActivity類中的onDestroy()方法中調用ActivityCollector類的removeActivity()方法,表明將一個馬上要銷燬的活動從活動管理器中移除。

Android中殺掉進程:

android.os.Process.killProcess(android.os.Process.myPid());

3、更簡潔的啓動Acitivity編寫規範

    把啓動Activity的邏輯封裝到一個方法中,在待啓動的Activity中添加一個public static void actionStart(Context context,String data1,String data2)方法完成Intent的構建,數據的傳遞與活動的啓動。

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