安卓activity的兩個(gè)神秘方法

安卓activity的兩個(gè)神秘方法

ID:8821244

大小:43.33 KB

頁數(shù):14頁

時(shí)間:2018-04-08

安卓activity的兩個(gè)神秘方法_第1頁
安卓activity的兩個(gè)神秘方法_第2頁
安卓activity的兩個(gè)神秘方法_第3頁
安卓activity的兩個(gè)神秘方法_第4頁
安卓activity的兩個(gè)神秘方法_第5頁
資源描述:

《安卓activity的兩個(gè)神秘方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、本文介紹Android中關(guān)于Activity的兩個(gè)神秘方法:onSaveInstanceState()和onRestoreInstanceState(),并且在介紹這兩個(gè)方法之后,再分別來實(shí)現(xiàn)使用InstanceState保存和恢復(fù)數(shù)據(jù)功能、Android實(shí)現(xiàn)屏幕旋轉(zhuǎn)異步下載效果這樣兩個(gè)示例?! ∈紫葋斫榻BonSaveInstanceState()和onRestoreInstanceState()?。關(guān)于這兩個(gè)方法,一些朋友可能在Android開發(fā)過程中很少用到,但在有時(shí)候掌握其用法會(huì)幫我們起到比較好的效果。尤其是在應(yīng)用程序在不知道的情況下退出后

2、,如何實(shí)現(xiàn)其數(shù)據(jù)保存的功能。先來讓我們看下這兩個(gè)方法的有什么樣的作用。  1.?基本作用:?  Activity的onSaveInstanceState()和onRestoreInstanceState()并不是生命周期方法,它們不同于onCreate()、onPause()等生命周期方法,它們并不一定會(huì)被觸發(fā)。當(dāng)應(yīng)用遇到意外情況(如:內(nèi)存不足、用戶直接按Home鍵)由系統(tǒng)銷毀一個(gè)Activity時(shí),onSaveInstanceState()會(huì)被調(diào)用。但是當(dāng)用戶主動(dòng)去銷毀一個(gè)Activity時(shí),例如在應(yīng)用中按返回鍵,onSaveInstanceS

3、tate()就不會(huì)被調(diào)用。因?yàn)樵谶@種情況下,用戶的行為決定了不需要保存Activity的狀態(tài)。通常onSaveInstanceState()只適合用于保存一些臨時(shí)性的狀態(tài),而onPause()適合用于數(shù)據(jù)的持久化保存?! ≡赼ctivity被殺掉之前調(diào)用保存每個(gè)實(shí)例的狀態(tài),以保證該狀態(tài)可以在onCreate(Bundle)或者onRestoreInstanceState(Bundle)(傳入的Bundle參數(shù)是由onSaveInstanceState封裝好的)中恢復(fù)。這個(gè)方法在一個(gè)activity被殺死前調(diào)用,當(dāng)該activity在將來某個(gè)時(shí)刻回

4、來時(shí)可以恢復(fù)其先前狀態(tài)。??  例如,如果activityB啟用后位于activityA的前端,在某個(gè)時(shí)刻activityA因?yàn)橄到y(tǒng)回收資源的問題要被殺掉,A通過onSaveInstanceState將有機(jī)會(huì)保存其用戶界面狀態(tài),使得將來用戶返回到activityA時(shí)能通過onCreate(Bundle)或者onRestoreInstanceState(Bundle)恢復(fù)界面的狀態(tài)。?  關(guān)于onSaveInstanceState(),是在函數(shù)里面保存一些View有用的數(shù)據(jù)到一個(gè)Parcelable對(duì)象并返回。在Activity的onSaveIns

5、tanceState(BundleoutState)中調(diào)用View的onSaveInstanceState(),返回Parcelable對(duì)象,  接著用Bundle的putParcelable方法保存在Bundle?savedInstanceState中。?  當(dāng)系統(tǒng)調(diào)用Activity的的onRestoreInstanceState(BundlesavedInstanceState)時(shí),?同過Bundle的getParcelable方法得到Parcelable對(duì)象,然后把該P(yáng)arcelable對(duì)象傳給View的onRestoreInstance

6、State(Parcelablestate)。在的View的onRestoreInstanceState中從Parcelable讀取保存的數(shù)據(jù)以便View使用。?  這就是onSaveInstanceState()和?onRestoreInstanceState()兩個(gè)函數(shù)的基本作用和用法。?  2.?onSaveInstanceState()什么時(shí)候調(diào)用?  先看ApplicationFundamentals上的一段話:  AndroidcallsonSaveInstanceState()beforetheactivitybecomesvuln

7、erabletobeingdestroyedbythesystem,butdoesnotbothercallingitwhentheinstanceisactuallybeingdestroyedbyauseraction(suchaspressingtheBACKkey).?  從這句話可以知道,當(dāng)某個(gè)activity變得"容易"被系統(tǒng)銷毀時(shí),該activity的onSaveInstanceState()就會(huì)被執(zhí)行,除非該activity是被用戶主動(dòng)銷毀的,例如當(dāng)用戶按BACK鍵的時(shí)候。?  注意上面的雙引號(hào),何為"容易"?意思就是說該acti

8、vity還沒有被銷毀,而僅僅是一種可能性。這種可能性有哪些?通過重寫一個(gè)activity的所有生命周期的onXXX方法,包括onSave

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。