Android中Activity的狀態(tài)保存

以下內(nèi)容整理自互聯(lián)網(wǎng)到千,僅用于個(gè)人學(xué)習(xí)


1. onSaveInstanceState (Bundle outState)的調(diào)用

當(dāng)某個(gè)activity“即將”被系統(tǒng)銷毀時(shí),該activity的onSaveInstanceState就會(huì)被執(zhí)行加矛,除非該activity是被用戶主動(dòng)銷毀的斟览,例如當(dāng)用戶按BACK鍵的時(shí)候。

“即將”的意思就是該activity還沒有被銷毀妓羊,而僅僅是一種可能性躁绸。這種可能性有哪些剥哑?通過重寫一個(gè)activity的所有生命周期的onXXX方法株婴,包括onSaveInstanceState和onRestoreInstanceState方法,我們可以清楚地知道當(dāng)某個(gè)activity(假定為activity A)顯示在當(dāng)前task的最上層時(shí)逻翁,其onSaveInstanceState方法會(huì)在什么時(shí)候被執(zhí)行,有這么幾種情況:

  • 當(dāng)用戶按下HOME鍵時(shí)。這是顯而易見的乍迄,系統(tǒng)不知道你按下HOME后要運(yùn)行多少其他的程序褥伴,自然也不知道Activity A是否會(huì)被銷毀,故系統(tǒng)會(huì)調(diào)用onSaveInstanceState似踱,讓用戶有機(jī)會(huì)保存某些非永久性的數(shù)據(jù)。以下幾種情況的分析都遵循該原則
  • 長(zhǎng)按HOME鍵轧简,選擇運(yùn)行其他的程序時(shí)庐橙。
  • 按下電源按鍵(關(guān)閉屏幕顯示)時(shí)。
  • 從Activity A中啟動(dòng)一個(gè)新的Activity時(shí)。
  • 屏幕方向切換時(shí)惨寿,例如從豎屏切換到橫屏?xí)r。在屏幕切換之前蕉拢,系統(tǒng)會(huì)銷毀Activity A,在屏幕切換之后系統(tǒng)又會(huì)自動(dòng)地創(chuàng)建Activity A闸准,所以onSaveInstanceState一定會(huì)被執(zhí)行。

總而言之库快,onSaveInstanceState的調(diào)用遵循一個(gè)重要原則,即當(dāng)系統(tǒng)“未經(jīng)你許可”時(shí)銷毀了你的activity湿蛔,則onSaveInstanceState會(huì)被系統(tǒng)調(diào)用财喳,這是系統(tǒng)的責(zé)任,因?yàn)樗仨氁峁┮粋€(gè)機(jī)會(huì)讓你保存你的數(shù)據(jù)(當(dāng)然你不保存那就隨便你了)所踊。

2. onRestoreInstanceState (Bundle outState)的調(diào)用

至于onRestoreInstanceState方法误证,需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成對(duì)的被調(diào)用的灌具,onRestoreInstanceState被調(diào)用的前提是缕题,Activity A“確實(shí)”被系統(tǒng)銷毀了,而如果僅僅是停留在有這種可能性的情況下宵睦,則該方法不會(huì)被調(diào)用,例如,當(dāng)正在顯示Activity A的時(shí)候郑趁,用戶按下HOME鍵回到主界面,然后用戶緊接著又返回到Activity A躲惰,這種情況下Activity A一般不會(huì)因?yàn)閮?nèi)存的原因被系統(tǒng)銷毀礁扮,故Activity A的onRestoreInstanceState方法不會(huì)被執(zhí)行逛钻。

另外,onSaveInstanceState的bundle參數(shù)也會(huì)傳遞到onCreate方法中锰提,你也可以選擇在onCreate方法中做數(shù)據(jù)還原。

3. 各個(gè)回調(diào)函數(shù)執(zhí)行順序

如果異常關(guān)閉Activity,即調(diào)用了onSaveInstanceState旺订,并且下次啟動(dòng)時(shí)會(huì)onRestoreInstanceState:

  • onCreate
  • onStart
  • onRestoreInstanceState
  • onResume

也就是說樱调,onRestoreInstanceState發(fā)生在onStart和onResume之間伙窃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末放祟,一起剝皮案震驚了整個(gè)濱河市跪妥,隨后出現(xiàn)的幾起案子纽疟,更是在濱河造成了極大的恐慌龙考,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件州藕,死亡現(xiàn)場(chǎng)離奇詭異酝陈,居然都是意外死亡穆壕,警方通過查閱死者的電腦和手機(jī)缨该,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蛤袒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事嫡锌。” “怎么了及皂?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵端幼,是天一觀的道長(zhǎng)婆跑。 經(jīng)常有香客問我,道長(zhǎng)峡碉,這世上最難降的妖魔是什么鲫寄? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任未斑,我火速辦了婚禮芽突,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己云稚,他們只是感情好拐格,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刑赶,像睡著了一般捏浊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撞叨,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天金踪,我揣著相機(jī)與錄音,去河邊找鬼牵敷。 笑死胡岔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的枷餐。 我是一名探鬼主播靶瘸,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼毛肋!你這毒婦竟也來了怨咪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤润匙,失蹤者是張志新(化名)和其女友劉穎惊暴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趁桃,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年肄鸽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卫病。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡典徘,死狀恐怖蟀苛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逮诲,我是刑警寧澤帜平,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站梅鹦,受9級(jí)特大地震影響裆甩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜齐唆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一嗤栓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦茉帅、人聲如沸叨叙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擂错。三九已至,卻和暖如春樱蛤,著一層夾襖步出監(jiān)牢的瞬間钮呀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工刹悴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留行楞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓土匀,卻偏偏與公主長(zhǎng)得像子房,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子就轧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android中的狀態(tài)保存和恢復(fù) Android中的狀態(tài)保存和恢復(fù), 包括Activity和Fragment以及其...
    圣騎士wind閱讀 4,849評(píng)論 4 48
  • 本文出自 “阿敏其人” 簡(jiǎn)書博客妒御,轉(zhuǎn)載或引用請(qǐng)注明出處解愤。 一、前言 Activity乎莉,安卓四大組件之一送讲。 每個(gè) A...
    阿敏其人閱讀 9,099評(píng)論 8 88
  • 初識(shí)Activity: 我們都知道android中有四大組件(Activity活動(dòng),Service服務(wù)惋啃,Conte...
    wangling90閱讀 968評(píng)論 2 2
  • 兩天前哼鬓,我選擇回到安徽。不是陪女票一起边灭,也不是家里發(fā)生了什么大事异希。只是想回來,看看家中桂花落盡了么绒瘦,“尿神”侄子長(zhǎng)...
    MrVey閱讀 269評(píng)論 0 0
  • 有時(shí) 生命如鋼鐵般剛強(qiáng) 有時(shí) 比一根冬麥還要脆弱 阿基里斯 特洛伊的木馬 人幸運(yùn) 因?yàn)槿藭?huì)死亡 在未來的某個(gè)時(shí)刻 ...
    萌龍?jiān)谔?/span>閱讀 189評(píng)論 0 1