在使用app的過程中有可能會發生突發情況,殺死我們的APP?
突發情況有哪些呢?比如屏幕旋轉,按Home鍵,recreate(),鎖屏,手機內存不夠APP被Kill等,那么有這些情況我們數據還沒來的幾保存應該怎么做呢?Google已經有了辦法了,那就是覆蓋onSaveInstanceState()方法來接受一個Bundle類型的參數,我們可以將該activity的信息和狀態數據存入此Bundle中。這樣,即使該activity在后臺被系統摧毀,然后重新回到前臺的時候,在調用onCreate()方法時,該Bundle對象會傳入onCreate方法的參數中。開發者可以在onCreate中取出自己保存的數據。
比如我有一個recreate 的頁面,需要保存一個臨時變量isSelected來判斷用戶是否點擊了頁面.實現如下:
@OverridePRotected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBoolean("isSelected", isSelected);}那么如何恢復保存的數據呢?onCreate()方法的函數中有一個Bundle saveInstanceState 的參數,沒錯數據就是存儲在這里的protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { isSelected = savedInstanceState.getBoolean("isSelected"); }在哪里調用saveInstanceState,大家可以在activity的各生命周期打印一下,很簡單的.
新聞熱點
疑難解答