編輯:關於Android編程
There are situations where the system will simply kill the activity's hosting process without calling this method (or any others) in it, so it should not be used to do things that are intended to remain around after the process goes away.
上面是官網的話,意思大概是,有很多情況下系統會簡單的殺死這個Activity的宿主進程而不調用它的onDestroy方法,所以在這個方法中不要做任何有關保留數據或者狀態的相關操作。
從官網生命周期圖我們可以看到Activity有兩個出口,onStop後有可能直接到 App process killed,而不執行onDestroy函數。
onPause –> onSaveInstanceState –> onStop
程序在後台的時候,選擇主動殺死程序進程,然後再從桌面點擊應用啟動
onStart –>onRestoreInstanceState - > onResume
data-snippet-id=ext.985723908b317cdb0e47782db9856314 data-snippet-saved=false data-csrftoken=zE7kqcfS-rPA0pfTUkywJOuJi__ohA2zmfR0 data-codota-status=done> onCreate ->onStart –>onRestoreInstanceState - > onResume
直接從桌面點擊應用啟動呢?
onRestart –> onStart –> onResume
按下返回按鍵
onPause –> onStop –> onDestroy
onSaveInstanceState()和onRestoreInstanceState 方法是什麼呢?
來自胡凱
onSaveInstanceState與onRestoreInstanceState的作用:
在資源緊張的情況下,系統會選擇殺死一些處於非棧頂的Activity來回收資源。 為了能夠讓這些可能被殺死的Activity能夠在恢復顯示的時候狀態不丟失,所以需要在Activity從棧頂往下壓的時候提供onSaveInstanceState的回調用來提前保存狀態信息。
而onRestoreInstanceState則是在這個Activity真的回收掉之後的恢復顯示階段用來恢復之前保存的數據。
onSaveInstanceState與onRestoreInstanceState的調用時機:
只要某個Activity是做入棧並且非棧頂時(啟動跳轉其他Activity或者點擊Home按鈕),此Activity是需要調用onSaveInstanceState的, 如果Activity是做出棧的動作(點擊back或者執行finish),是不會調用onSaveInstanceState的。
只有在Activity真的被系統非正常殺死過,恢復顯示Activity的時候,就會調用onRestoreInstanceState。
如果你不做任何配置
啟動Activity會執行如下方法:
onCreate –> onStart –> onResume
之後旋轉屏幕,則Activity會被銷毀並重新創建,之後便會執行如下方法:
onSaveInstanceState –> onStop –> onDestroy –> onCreate –> onStart –> onRestoreInstanceState –> onResume
data-snippet-id=ext.853875dd1810fa8e66a574b85f570628 data-snippet-saved=false data-csrftoken=sLRS6Y1X-wXBfz4nAaIhM3QIxZeMeFW-y-AI data-codota-status=done>onPause –> onSaveInstanceState –> onStop –> onDestroy –> onCreate –> onStart –> onRestoreInstanceState –> onResume
在AndroidManifest配置文件裡聲明android:configChanges屬性
13時需加上screenSize) data-snippet-id=ext.7c24116942ba8a2c3d69a054d026c5ad data-snippet-saved=false data-csrftoken=aeVpge75-TL-szOrrtsoVWRMItyXjf5ZvJAI data-codota-status=done>android:configChanges=keyboardHidden|orientation|screenSize(sdk>13時需加上screenSize)
1.自定義字體可以使用setTypeface(Typeface)方法來設置文本框內文本的字體,而android的Typeface又使用TTF字體文件來設置字體。所以,我們
上一篇文章中我們講解了android app中的輪訓操作,講解的內容主要包括:我們在App中使用輪訓操作的情景,作用以及實現方式等。一般而言我們使用輪訓操作都是通過定時任
Android Monitor包含GPU Monitor,它將可視化的顯示渲染窗體的時間。GPU Monitor可以幫助你:1、 迅速查看UI窗體生成2、 辨別是否渲染管
可能小伙伴們讀了我上一篇博客關於Android文件存儲的的,在文件操作的時候大家有沒有疑問呀,有就對了,可能在保存自定義對象的時候,如何序列化呀?ClassLoader到