posts - 93,  comments - 2,  trackbacks - 0
          當某個activity變得“容易”被系統銷毀時,該activity的onSaveInstanceState就會被執行,除非該activity是被用戶主動銷毀的,例如當用戶按BACK鍵的時候。 
          注意上面的雙引號,何為“容易”?言下之意就是該activity還沒有被銷毀,而僅僅是一種可能性。這種可能性有哪些?通過重寫一個activity的所有生命周期的onXXX方法,包括onSaveInstanceState和onRestoreInstanceState方法,我們可以清楚地知道當某個activity(假定為activity A)顯示在當前task的最上層時,其onSaveInstanceState方法會在什么時候被執行,有這么幾種情況: 
          1、當用戶按下HOME鍵時。 
          這是顯而易見的,系統不知道你按下HOME后要運行多少其他的程序,自然也不知道activity A是否會被銷毀,故系統會調用onSaveInstanceState,讓用戶有機會保存某些非永久性的數據。以下幾種情況的分析都遵循該原則 
          2、長按HOME鍵,選擇運行其他的程序時。 
          3、按下電源按鍵(關閉屏幕顯示)時。 
          4、從activity A中啟動一個新的activity時。 
          5、屏幕方向切換時,例如從豎屏切換到橫屏時。
           
          在屏幕切換之前,系統會銷毀activity A,在屏幕切換之后系統又會自動地創建activity A,所以onSaveInstanceState一定會被執行。 
          總而言之,onSaveInstanceState的調用遵循一個重要原則,即當系統“未經你許可”時銷毀了你的activity,則onSaveInstanceState會被系統調用,這是系統的責任,因為它必須要提供一個機會讓你保存你的數據(當然你不保存那就隨便你了)。 
          至于onRestoreInstanceState方法,需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成對的被調用的,onRestoreInstanceState被調用的前提是,activity A“確實”被系統銷毀了,而如果僅僅是停留在有這種可能性的情況下,則該方法不會被調用,例如,當正在顯示activity A的時候,用戶按下HOME鍵回到主界面,然后用戶緊接著又返回到activity A,這種情況下activity A一般不會因為內存的原因被系統銷毀,故activity A的onRestoreInstanceState方法不會被執行。 
          另外,onRestoreInstanceState的bundle參數也會傳遞到onCreate方法中,你也可以選擇在onCreate方法中做數據還原。
           
          轉載:http://gundumw100.iteye.com/blog/1115080
          posted on 2015-05-11 10:34 Terry Zou 閱讀(347) 評論(0)  編輯  收藏 所屬分類: Android
          <2015年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 富平县| 财经| 西昌市| 陇西县| 武强县| 科技| 兰西县| 扎兰屯市| 新乡县| 堆龙德庆县| 太仆寺旗| 荥阳市| 理塘县| 乌鲁木齐县| 红原县| 墨竹工卡县| 阿巴嘎旗| 阿拉善左旗| 宝清县| 诸城市| 宝应县| 明溪县| 海淀区| 资源县| 清流县| 灌云县| 阿合奇县| 达孜县| 舒兰市| 改则县| 永定县| 前郭尔| 蚌埠市| 宽城| 禹州市| 泸西县| 阿拉善左旗| 马山县| 易门县| 堆龙德庆县| 彰武县|