當您開始使用 C++ 或 Java 等語言進行編程時,您首先要學習的是 main 方法,即當我們啟動應用程序時操作系統將調用的方法。
在 Android 中,沒有這樣的 main 方法,但是我們的 Activity 有幾個方法,當它們發生時將由 SSOO 調用 重要事件。 在本章中,我們將深入研究這些事件是什麼以及它們是如何工作的。 一個活動的完整週期 Android。 官方文檔 對此主題進行了廣泛的解釋,在這裡我們將研究最重要的元素以及處理它們時的一些常見錯誤。
Android 的生命週期遵循以下方案:
生命週期事件
- onCreate(捆綁)
- 它代表了當 活動已創建。 在 Android 中創建新活動時,嚮導通常會生成此方法,並且我們將在其中創建活動所需的所有內容。 如果我們之前已將活動數據保存在 Bundle 對像中,則可以使用它來重新生成它。 一般情況下我們不會使用它。
- onStart()
- 活動將前往 在屏幕上,儘管不一定可見。 如果我們從停止狀態回來,我們將首先執行 onRestart()。
- onRestart()
- 當從調用 onStop() 繼續進行時,在 onStart() 之前。
- onResume()
- 活動即將開始 回應互動 用戶。
- onPause()
- 該活動將 停止回答 到用戶交互。
- onStop()
- 活動已完全移至 背景.
- onDestroy()
- 活動 即將被摧毀 及其資源的釋放。
當我們需要實現這些方法之一時,我們將通過將這些配置文件添加到我們的活動中來實現:
公共類 MyActivity 擴展 Activity { protected void onCreate(Bundle savingInstanceState) { super.onCreate(savedInstanceState); } ... } protected void onStart() { super.onStart(); ... } protected void onRestart() { super.onRestart(); ... } protected void onResume() { super.onResume(); ... } protected void onPause() { ... super.onPause(); } protected void onStop() { ... onStop(); } protected void onDestroy() { ... super.onDestroy(); } }
重要的是要保持 超類方法調用 以免發現意外。 必須維持高於我們活動的每個事件的任務。 此調用將轉到輸入事件的開頭,並轉到輸出事件的結尾。 通過這種方式,我們將避免意外,因為我們需要但不受我們控制的活動元素將在使用它們之前創建,並在使用後被銷毀。
我們不必添加所有事件,我們不需要的將使用默認實現。 我們經常使用的方法(不建議接觸其他方法)是 onCreate、onPause 和 onRestart。
onCreate 的含義很明確:它是我們加載所需資源、視圖和任何其他所需內容的地方。 對於輸出,我們唯一關注的方法是 onPause。 避免 onStop 和 onDestroy 的原因是我們無法控制它們。 onPause 會在應用程序退出前台時執行,而另外兩個將由操作系統根據需要執行。 他們可能永遠都跑不了! 這樣做是為了避免從活動到桌面(反之亦然)時一遍又一遍地創建活動的成本,並且操作系統只會在需要時釋放已使用的資源,而不必為所有資源提供服務開放流程。
這意味著我們將假設應用程序將在執行 onPause 後死亡,並且它是我們的 最後一次保存數據的機會 我們需要保存並停止我們正在使用的服務,例如地理定位。 如果我們已停止服務,則重新啟動它們的適當位置是 onRestart。
其他方法我們不需要使用太多。 我們需要它的一個常見情況是當我們集成第三方庫時,例如 Facebook 或 Flurry。 在這些情況下,我們將被要求將活動的方法綁定到其代碼。 例如,要註冊 Flurry 會話,我們將被要求在 onStart 方法中啟動會話。
一些有用的想法
- 記住每個事件的目的。 您將始終需要 onCreate,並且經常需要 onPause 和 onResume 來停止和重新啟動最消耗的服務。
- 不要碰其他事件 如果你不是特別需要它。
- 不要相信 onStop 和 onDestroy, 他們可能永遠不會被稱為。 將您需要的所有內容保存在 onPause 中。
- 避免使用非最終靜態變量。 當您返回時,應用程序仍然可以加載,並且它們將保留它們留下的值。 如果您別無選擇,只能使用它們,請務必在返回前台時重置它們的值。
更多信息 - Android編程基本指南