Activity狀態恢復

陳順發表於2013-12-31

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的呼叫者來說是不可見的。

相關文章