一、返回棧
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的構建,數據的傳遞與活動的啓動。