多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > 面試中被問到:Android中activity保存狀態(tài)和數(shù)據(jù)到底該在哪個(gè)方法中進(jìn)行

面試中被問到:Android中activity保存狀態(tài)和數(shù)據(jù)到底該在哪個(gè)方法中進(jìn)行

來源:程序員人生   發(fā)布時(shí)間:2015-04-28 08:42:30 閱讀次數(shù):4959次

        今天接到1個(gè)電面,途中面試官問到1個(gè)問題,如果1個(gè)activity在后臺(tái)的時(shí)候,由于內(nèi)存不足可能被殺死,在這之前如果想保存其中的狀態(tài)數(shù)據(jù),比如說客戶填的1些信息之類的,該在哪一個(gè)方法中進(jìn)行。


        我聽到的第1反應(yīng)就是說:在onPause方法中進(jìn)行保存狀態(tài)的操作。但是面試官說:onPause()的延續(xù)時(shí)間很短,假設(shè)要進(jìn)行1些長時(shí)間的操作呢?


        然后我就糾結(jié)了,由于我知道,如果是由于內(nèi)存不足而被清算,onDestroy()方法1般是不會(huì)被履行的。所以只好實(shí)話實(shí)說,只知道onDestroy在這類情況下不1定會(huì)履行,所以不能在其中做操作。


        事后又去看了1下官方文檔,發(fā)現(xiàn):對(duì)activity的燒毀,有下面這么1個(gè)表:


        




"Killable"表示當(dāng)前activity是不是可以被殺死,意思是說當(dāng)上面標(biāo)記為Killable的方法返回以后,activity便可能隨時(shí)被殺死。從表中不難看出在onPause方法調(diào)用完之前,activity都是不能夠被殺死的,而onStop()和onDestroy()都是可以被殺死的。但是圖中又標(biāo)出了1個(gè)黃色的標(biāo)記:HONEYCOMB。



官方文章原文是這樣說的:Starting with Honeycomb, an application is not in the killable state until itsonStop() has returned. 

從Honeycomb(Android 3.0)開始,利用只有等到onStop()方法返回以后,才可以被殺死,也就是說在履行完onStop()方法之前,利用都不可能被殺死。




you should use the onPause() method to write any persistent data (such as user edits) to storage.

你應(yīng)當(dāng)在onPause()方法中去存儲(chǔ)那些持久性的數(shù)據(jù),比如用戶的輸入等。




the method onSaveInstanceState(Bundle) is called before placing the activity in such a background state, allowing you to save away any dynamic instance state in your activity into the given Bundle, to be later received in onCreate(Bundle) if the activity needs to be re-created.


onSaveInstanceState(Bundle)將在activity轉(zhuǎn)入“background state后臺(tái)狀態(tài)”之前被調(diào)用,能讓我們存儲(chǔ)1些activity的動(dòng)態(tài)的狀態(tài)值到Bundle對(duì)象中,以便在以后調(diào)用onCreate(Bundle)方法時(shí)用到。




這里提到1個(gè)background state后臺(tái)狀態(tài)”,我們來看看activity的幾種狀態(tài):



  • 前臺(tái)狀態(tài)

  • 通俗的說就是可以看到,且可以操作(有焦點(diǎn))的狀態(tài)



  • 可視狀態(tài)

  • 便可以看得見(沒有被完全遮擋),但是沒有焦點(diǎn),不可以觸摸操作;比如躲在對(duì)話框后面的activity



  • 后臺(tái)狀態(tài)

  • 已看不到了,系統(tǒng)可以將這個(gè)進(jìn)程殺死來回收內(nèi)存。如果在這類狀態(tài)下activity被系統(tǒng)殺死了,那末在用戶重新打開這個(gè)activity的時(shí)候,它的onCreate方法會(huì)使用之前onSaveInstanceState(Bundle)保存的狀態(tài)數(shù)據(jù),來讓自己恢復(fù)到之前的狀態(tài)



  • 空進(jìn)程狀態(tài)

  • 1個(gè)沒有持有任何activity和任何利用組件的進(jìn)程,比如Services或廣播接受者,當(dāng)內(nèi)存不足的時(shí)候,它們將會(huì)被先殺死并回收。



    也就是說onSaveInstanceState(Bundle)會(huì)在activity轉(zhuǎn)入后臺(tái)狀態(tài)之前被調(diào)用,也就是onStop()方法之前,onPause方法以后被調(diào)用;我們都知道在默許情況下,在旋屏以后,activity會(huì)重新經(jīng)歷1次生命周期,下面的log就是在點(diǎn)擊旋屏以后的履行順序:





    這樣看起來,那種要保存的數(shù)據(jù),應(yīng)當(dāng)在onPause下完成,而activity的1些狀態(tài)值,比如組件寬高之類的,應(yīng)當(dāng)在onSaveInstanceState中保存在Bundle中去。


    但是要注意的是,官方文檔最后又給出了1個(gè)正告:



     Note that it is important to save persistent data in onPause() instead of onSaveInstanceState(Bundle) because the latter is not part of the lifecycle callbacks, so will not be called in every situation as described in its documentation.



    由于onSaveInstanceState(Bundle)方法不是activity生命周期中的回調(diào)方法之1,所以在activity被殺死的時(shí)候,它是不能保證百分百的被履行的。。。。



    看模樣onSaveInstanceState()也靠不住啊,還是在onPause中做吧,面試官也不1定靠譜。


    生命周期圖:

  • 轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/cyp331203/article/details/44985087

  • 生活不易,碼農(nóng)辛苦
    如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
    程序員人生
    ------分隔線----------------------------
    分享到:
    ------分隔線----------------------------
    關(guān)閉
    程序員人生
    主站蜘蛛池模板: 婷婷伊人网| 成人影院久久久久久影院 | 国产国产人免费视频成69大陆 | 亚洲国产精品尤物yw在线观看 | 成人亚洲精品一区二区 | 99久久成人 | 久久亚洲精品人成综合网 | 亚洲欲色 | 91精品免费久久久久久久久 | 亚洲春色综合另类网蜜桃 | 成人欧美视频在线观看播放 | 精品日韩二区三区精品视频 | 亚洲免费观看网站 | 亚洲最大黄色网址 | 免费大片黄在线观看日本 | vvvv99日韩精品亚洲 | 真人肉体一级毛片 | 国产成人咱精品视频免费网站 | a免费国产一级特黄aa大 | 亚洲 日本 欧美 | 亚洲专区在线视频 | 亚洲精品片 | 日本人与物videos另类 | 国内久久精品 | japanese日本护士xx亚洲 | 日本www网站 | 2019精品手机国产品在线 | 久操精品在线观看 | 婷婷激情丁香 | 一级黄色美女视频 | 成人特级毛片 | 第一页欧美 | 亚洲国产第一区二区三区 | 美国毛片免费看 | 久久久久久久亚洲精品一区 | 窝窝午夜视频 | 老司机午夜精品网站在线观看 | 激情久久久久久久久久久 | 最近最新中文字幕免费1 | 久久.com| 91久久综合九色综合欧美亚洲 |