Activity狀態恢復
Android Activity具備儲存狀態和恢復狀態的功能。這個功能可以讓我們在Activity被回收之前儲存狀態,以便在使用者切換回來時,恢復狀態。那麼狀態恢復的機制是什麼呢?
Activity的啟動是通過Intent完成的(有一種情況:即使用者通過返回按鈕回退到之前被回收的Activity,這個Activity是不是通過Intent啟動的,還不確定),但是Intent是沒有攜帶任何狀態恢復的資訊的。所以,有兩個疑問產生:
1. Activity的狀態存放在哪裡?
2. Activity的狀態是怎麼被恢復的?
通過實驗,Activity的狀態恢復與怎麼啟動它沒有關係,狀態儲存和恢復完全是Android系統內部的一個機制,也就是說,當我們需要啟動一個Activity時,不管以任何方式啟動,總是由Android系統接管Activity的啟動,準確來說,是ActivityManager接管Activity的啟動。ActivityManager在收到啟動Activity的請求時,首先檢視要啟動的Activity有沒有儲存狀態,如果有,那麼就在Activiy的onCreate方法和onRestoreInstanceState方法中,將儲存的狀態傳遞給Activity去恢復狀態。
從這一點可以推斷出,Activity的狀態管理是由ActivityManager完成的,而且對Activity的呼叫者來說是不可見的。
相關文章
- Activity 知識梳理(3) Activity狀態儲存和恢復
- Android Activity 重建之狀態儲存與恢復Android
- [譯]Android Activity 和 Fragment 狀態儲存與恢復的最佳實踐AndroidFragment
- [譯] 狀態恢復入門教程
- 【備份恢復】恢復inactive狀態的日誌檔案
- iOS UI狀態儲存和恢復(三)iOSUI
- 前端 | Vue 路由返回恢復頁面狀態前端Vue路由
- PRemiere介面怎麼恢復?PR介面功能恢復預設狀態的技巧REM
- Fragment Transactions和Activity狀態丟失Fragment
- 恢復oracle的scott使用者初始狀態操作Oracle
- 需要恢復中斷狀態的一個場景
- 測試恢復3==當資料庫處於開啟狀態時的恢復資料庫
- Android 元件系列-----Activity儲存狀態Android元件
- [譯]使用MVI打造響應式APP(六):恢復狀態APP
- win10登錄檔恢復初始狀態的方法Win10
- Fragment 知識梳理(2) Fragment 狀態儲存和恢復Fragment
- sqlsever處理資料庫的恢復掛起狀態SQL資料庫
- Activity資料儲存與恢復淺析
- Oracle 11g 資料庫恢復-場景5:部分檔案損壞恢復,開庫狀態,低可用恢復方式Oracle資料庫
- Oracle 11g 資料庫恢復-場景4:部分檔案損壞恢復,開庫狀態, 高可用恢復方式Oracle資料庫
- Oralce 11g資料庫恢復-場景3:部分檔案損壞恢復,關庫狀態,高可用恢復方式資料庫
- ViewModel:持久化、onSaveInstanceState()、UI 狀態恢復和 LoaderView持久化UI
- inactive狀態日誌組檔案損壞的恢復
- 在open狀態下恢復丟失的資料檔案
- oracle關閉狀態刪除活動日誌報錯恢復(一)Oracle
- 在open狀態下恢復未備份的資料檔案
- 如何恢復SSD NVME固態硬碟的資料恢復硬碟資料恢復
- 設計模式(二十)——備忘錄模式(遊戲角色狀態恢復問題)設計模式遊戲
- MySQL是如何做到可以恢復到任意一秒狀態的?MySql
- 案例:在open狀態下恢復未備份的資料檔案
- 【原創】模擬狀態為active的日誌損壞的資料恢復實驗(不完全恢復)資料恢復
- win10怎麼恢復系統初始狀態 win10系統還原成原始狀態的方法Win10
- vue v-for 列表更新導致 iframe 重新整理而狀態丟失的原因以及恢復狀態的方案Vue
- 監控Activity的啟動等狀態--- 原始碼級原始碼
- SQLServer資料庫處於恢復掛起狀態的解決辦法SQLServer資料庫
- 資料庫恢復狀態可能導致JOB無法自動執行資料庫
- win10如何恢復電腦右下角的輸入法 win10如何恢復輸入法狀態列Win10
- ODS 狀態修復加個人理解