2019年10月27日 星期日

Android Fragment 內存重啟 | After the system kills an app

情境

今天我有一個 activity 要 replace A fragment,在 A fragment 裡按 button 去  add B fragment,畫面上最後呈現 B,按下 back 會回到 A,再按 back 會離開 app。


內存重啟後,我需要保持一致的流程。



結論:

在 activity 調用 fragment 時判斷 savedInstanceState

如果 savedInstanceState  == null 表示 activty 是「新建立」的

這時候調用 A fragment 的 replace


如果 savedInstanceState  != null 表示 activty 是「重新建立」的

什麼都不用做,app 就幫你恢復好了


如果沒有判斷 savedInstanceState ,則每次重新建立 activity 時也會重新replace 新的 A fragment,造成畫面或 backStackEntryCount 不如預期。

如果你需要對 app 幫你恢復的 fragment 做事的話,在一開始 replace 或 add fragment 時就要加上 tag,重建後調用  supportFragmentManager#findFragmentByTag 來做事,大概4這樣。

PS. 做這種測試的時候之前都是用app 提供的清除內存工具,最近發現開發人員選項裡有個「不要保留活動」,可以更快實現這樣的測試~



沒有留言:

張貼留言