APP開發(fā)實戰(zhàn)62-Activity數(shù)據(jù)保存和恢復(fù)

16.3Activity數(shù)據(jù)保存和恢復(fù)

16.3.1利用onSaveInstanceState和onRestoreInstanceState函數(shù)

(1)onCreate(Bundle savedInstanceState) 方法

Activity創(chuàng)建時回調(diào):該方法會自動傳入一個Bundle 對象, 該 Bundle 對象就是上次被系統(tǒng)銷毀時在?onSaveInstanceState中保存的數(shù)據(jù)。

--?注意?:只有是系統(tǒng)自動回收的時候才會保存Bundle 對象數(shù)據(jù)。

--?Bundle對象來源:onCreate() 方法中的 Bundle 對象參數(shù),是在onSaveInstance()方法中保存的Bundle 對象。

.

(2)?onSaveInstanceState(BundleoutState) 方法

outState參數(shù)作用?:

--?數(shù)據(jù)保存:Activity 聲明周期結(jié)束的時候, 需要保存 Activity 狀態(tài)的時候, 會將要保存的數(shù)據(jù)使用鍵值對的形式保存在 Bundle對象中。

--?恢復(fù)數(shù)據(jù):在 Activity 的onCreate()方法創(chuàng)建 Activity 的時候會傳入一個 Bundle 對象, 這個Bundle對象就是這個 outState 參數(shù);

調(diào)用時機如下:

--?按下Home鍵?:Activity 進入了后臺, 此時會調(diào)用該方法。

--?按下電源鍵:屏幕關(guān)閉, Activity 進入后臺。

--?啟動其它 Activity:Activity 被壓入了任務(wù)棧的棧底。

--?橫豎屏切換:會銷毀當(dāng)前 Activity 并重新創(chuàng)建。

onSaveInstanceState方法調(diào)用注意事項?:

--?用戶主動銷毀不會調(diào)用:當(dāng)用戶點擊回退鍵 或者 調(diào)用了 finish() 方法,不會調(diào)用該方法。

--?調(diào)用時機不固定:該方法一定是在onStop() 方法之前調(diào)用,但是不確定是在onPause() 方法之前還是之后調(diào)用。

--?布局中組件狀態(tài)存儲:每個組件都 實現(xiàn)了onSaveInstance() 方法,在調(diào)用函數(shù)的時候,會自動保存組件的狀態(tài),。注意,只有定義了id 的組件才會保存。

--?關(guān)于默認的?super.onSaveInstanceState(outState):該默認的方法是實現(xiàn)組件狀態(tài)保存的。

(3)?onRestoreInstanceState(BundlesavedInstanceState) 方法

方法回調(diào)時機:殺死不在前臺的Activity之后用戶回到此Activity,或者用戶改變屏幕方向的這兩個重建過程中被調(diào)用。

--?Bundle對象傳遞:該方法保存的 Bundle 對象在 Activity 恢復(fù)的時候也會通過參數(shù)傳遞到 onCreate() 方法中。

參考:http://blog.csdn.net/shulianghan/article/details/38297083

16.3.2利用onPause和onResume函數(shù)

從以上內(nèi)容可知,onSaveInstanceState和onRestoreInstanceState在Activity的生命周期中,并不總是會被調(diào)用,最保險的方式是在onPause中保存數(shù)據(jù),在onResume函數(shù)中,恢復(fù)數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android中的狀態(tài)保存和恢復(fù) Android中的狀態(tài)保存和恢復(fù), 包括Activity和Fragment以及其...
    圣騎士wind閱讀 5,166評論 4 48
  • Activity是一個應(yīng)用組件,用戶可與其提供的屏幕進行交互。以執(zhí)行撥打電話,拍攝照片,發(fā)送電子郵件或查看地圖等操...
    DanieX閱讀 1,165評論 0 4
  • 啟動與銷毀Activity 不同于使用 main() 方法啟動應(yīng)用的其他編程范例,Android 系統(tǒng)會通過調(diào)用對...
    安卓Boy閱讀 1,885評論 3 5
  • 您的應(yīng)用中的Activity應(yīng)該做到如下需求: 1.用戶在使用應(yīng)用時接聽來電或切換到另一個應(yīng)用,它不會崩潰。 2....
    正陽Android閱讀 609評論 1 0
  • 只是想分享一首歌的歌詞 一直覺得小說改編成電視劇中還是小說原作者寫主題歌的歌詞最能概括整個故事了。比如《瑯琊榜》中...
    1996提拉米蘇閱讀 973評論 0 0

友情鏈接更多精彩內(nèi)容