Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發——Activity生命周期中的一些注意點

Android開發——Activity生命周期中的一些注意點

編輯:關於Android編程

這裡寫圖片描述

1. Activity的onDestory()在Activity關閉時一定會被調用嗎?

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函數。

2. 按下home鍵後 Activity發生什麼變化?

    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 方法是什麼呢?

3. onSaveInstanceState() 和 onRestoreInstanceState()

來自胡凱
onSaveInstanceState與onRestoreInstanceState的作用:

在資源緊張的情況下,系統會選擇殺死一些處於非棧頂的Activity來回收資源。 為了能夠讓這些可能被殺死的Activity能夠在恢復顯示的時候狀態不丟失,所以需要在Activity從棧頂往下壓的時候提供onSaveInstanceState的回調用來提前保存狀態信息。

而onRestoreInstanceState則是在這個Activity真的回收掉之後的恢復顯示階段用來恢復之前保存的數據。

onSaveInstanceState與onRestoreInstanceState的調用時機:

只要某個Activity是做入棧並且非棧頂時(啟動跳轉其他Activity或者點擊Home按鈕),此Activity是需要調用onSaveInstanceState的, 如果Activity是做出棧的動作(點擊back或者執行finish),是不會調用onSaveInstanceState的。

只有在Activity真的被系統非正常殺死過,恢復顯示Activity的時候,就會調用onRestoreInstanceState。

4. 屏幕旋轉時,Activity執行了什麼方法?

如果你不做任何配置
啟動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

5. 屏幕旋轉不重建Activity

在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. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved