掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
這是關(guān)于在應(yīng)用中保存數(shù)據(jù)和應(yīng)用狀態(tài)系列文章中的***篇。在安卓SDK中有許多機(jī)制可以用來保存數(shù)據(jù),決定使用哪一種和何時(shí)觸發(fā)該操作常讓人困惑。 當(dāng)創(chuàng)建個(gè)人應(yīng)用程序的時(shí)候你想要做的***件、最容易的事就是保存一些用戶輸入的、明確需要保存的數(shù)據(jù)。下面是一些常用來持久化存儲(chǔ)的方法:

堅(jiān)守“ 做人真誠(chéng) · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都茶藝設(shè)計(jì)小微創(chuàng)業(yè)公司專業(yè)提供成都定制網(wǎng)站營(yíng)銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。
另外,有些情況需要保存應(yīng)用程序的當(dāng)前狀態(tài),因?yàn)槟硞€(gè)事件被觸發(fā)。例如:
以上的情況,你都需要持久化保存用戶輸入的數(shù)據(jù)。當(dāng)Activity被放到后臺(tái)或者在銷毀的過程中,onPause方法總是被調(diào)用,緊接著是 onStop即使UI被完全隱藏。所以***在OnPause方法中保存數(shù)據(jù)。隨后,當(dāng)用戶再次接觸之前的Activity,如果它仍在內(nèi)存中 onRestart,onstart和onResume方法將被調(diào)用,如果已經(jīng)被回收了就需要被重新常見,那么onCreate、onStart、和 onResume將被調(diào)用。所以如果你想在所有情況下都再次顯示之前的數(shù)據(jù),你應(yīng)該在onResume方法中恢復(fù)UI。
如果不需要***的保存數(shù)據(jù)而只想保存UI的狀態(tài),你可以在onSaveInstanceState方法中把數(shù)據(jù)保存在Bundle中。該方法不能用 來保存數(shù)據(jù),因?yàn)樗皇茿ctivity生命周期的一部分,僅僅當(dāng)Activity需要重新創(chuàng)建或者被放到后臺(tái)的時(shí)候被UI事件觸發(fā),被***銷毀的時(shí)候該 方法不被調(diào)用。所以它僅用于保存一些暫時(shí)性View狀態(tài)。有些數(shù)據(jù)已經(jīng)被安卓SDK保存了,但你可能需要保存些額外的信息,例如,假如你有些自定義的控 制,當(dāng)用戶按返回鍵回到Activity的時(shí)候,UI的狀態(tài)需要被恢復(fù),如果Activity仍在內(nèi)存中,保存有狀態(tài)信息的bundle對(duì)象可以在 onRestoreInstanceState方法中獲得,如果Activity被回收了需要重新創(chuàng)建,可以在onCreate方法中獲得bundle對(duì) 象。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流