APP的狀態(tài)發(fā)生改變時

有時候APP的狀態(tài)會發(fā)生改變,從而導(dǎo)致我們丟失一些數(shù)據(jù)和信息。比如Activity在onDestroy方法之后會丟失activity實例中所引用的信息,而我們又想保存這些信息,比如在EditText中的text、ListView中的Scroll position.

在這種情況下,最好的想法就是調(diào)用想用的onSaveInstanceState方法,比如Activity、View下得onSaveInstanceState()方法保存想要保存的信息,他可以使得相應(yīng)的實例在銷毀之后依舊保存相關(guān)的數(shù)據(jù)信息,在實例恢復(fù)時可以載入已保存的數(shù)據(jù)信息。

對于調(diào)用了onSaveInstanceState()方法的情況,可以使用onRestoreInstanceState()方法從bundle中恢復(fù)獲得在onSaveInstanceState()方法中保存的數(shù)據(jù)信息。

對于Activity, 如果不希望因為橫豎屏切換從而造成Activity實例重載,造成數(shù)據(jù)丟失的話,可以使用android:screenOrientation屬性固定Activity的顯示模式。之后,在橫豎屏切換時,Activity將不會銷毀,重新創(chuàng)建實例,也就不會因此原因從而造成Activity數(shù)據(jù)的丟失。

在Activity下,還有一種方法可以應(yīng)對這樣的Configuration changes。 通過在android:configChanges 中設(shè)定相應(yīng)的屬性,從而使得該Activity在面對這些屬性時,不會restart,而是調(diào)用onConfigurationChanged()方法。 ? 但是這種應(yīng)對Configuration changes的方法是不推薦的。

最后編輯于
?著作權(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,165評論 4 48
  • 您的應(yīng)用中的Activity應(yīng)該做到如下需求: 1.用戶在使用應(yīng)用時接聽來電或切換到另一個應(yīng)用,它不會崩潰。 2....
    正陽Android閱讀 603評論 1 0
  • 啟動與銷毀Activity 不同于使用 main() 方法啟動應(yīng)用的其他編程范例,Android 系統(tǒng)會通過調(diào)用對...
    安卓Boy閱讀 1,879評論 3 5
  • 有時候畫的過程中有很多時刻覺得畫的很精彩,可是最后出來的結(jié)果卻不怎么滿意,可見還是大關(guān)系上出問題。畫的像是最虛偽的...
    白黑黑芝麻閱讀 251評論 2 4
  • 本身一直做著一件低頻的項目,三三兩兩能接到一些單子,雖然不多,但考慮到?jīng)]做任何推廣,覺得是件很正常的事情,以為只要...
    照江明月閱讀 333評論 0 0

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