Android 系統在Activity 生命周期中加入一些鉤子,我們可以在這些系統預留的鉤子中做一些事情。
例舉了 7 個常用的鉤子:
protected void onCreate(Bundle savedInstanceState)
protected void onStart()
protected void onResume()
protected void onPause()
protected void onStop()
protected void onRestart()
protected void onDestroy()
簡要說明:
onCreate(Bundle savedInstanceState):創建activity時調用。設置在該方法中http://www.myexception.cn/,還以Bundle中可以提出用于創建該 Activity 所需的信息。
onStart():activity變為在屏幕上對用戶可見時,即獲得焦點時,會調用。
onResume():activity開始與用戶交互時調用(無論是啟動還是重新啟動一個活動,該方法總是被調用的)。
onPause():activity被暫停或收回cpu和其他資源時調用,該方法用于保存活動狀態的。。
onStop():activity被停止并轉為不可見階段及后續的生命周期事件時,即失去焦點時調用。
onRestart():重新啟動activity時調用。該活動仍在棧中,java.io.UnsupportedEncodingException而不是啟動新的活動。
onDestroy():activity被完全從系統內存中移除時調用,該方法被調用可能是因為有人直接調用 finish()方法 或者系統決定停止該活動以釋放資源。
橫豎屏切換
1 切換到橫屏
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
2 切換到豎屏,銷毀了兩次
onSaveInstanceState
onPause
onStop
onDestroyonCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
3 修改AndroidManifest.xml,把該Activity添加 android:configChanges="orientation",切橫屏,只銷毀一次
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
4 再切回豎屏,發現不會再打印相同信息,但多打印了一行onConfigChanged
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onConfigurationChanged
5 更改 android:configChanges="orientation" 改成 android:configChanges="orientation|keyboardHidden",切橫屏,就只打印onConfigChanged
onConfigurationChanged
6 切回豎屏
onConfigurationChanged
onConfigurationChanged
總結:
1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次
2、設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次
3、設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法
android生命周期深入分析(一)
2020-12-24 14:56Android教程網 Android
Android 程序的生命周期是由系統控制而非程序自身直接控制,本文將詳細介紹,需要的朋友可以參考下
延伸 · 閱讀
- 2024-11-03SIE高管重申:PS5有十年生命周期 Pro給用戶更多選
- 2022-03-11Android String類型轉換為float、double和int的工具類方
- 2022-03-11Android 8.1 Launcher3實現動態指針時鐘功能
- 2022-03-11Android控件Spinner實現下拉列表及監聽功能
- 2022-03-11詳解Android獲取所有依賴庫的幾種方式
- 2022-03-11Android 仿高德地圖可拉伸的BottomSheet的示例代碼
- Android
Android Animation實戰之屏幕底部彈出PopupWindow
這篇文章主要為大家介紹了Android Animation動畫實戰項目,屏幕底部彈出PopupWindow,如何實現?文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的...
- Android
Android編程中EditText限制文字輸入的方法
這篇文章主要介紹了Android編程中EditText限制文字輸入的方法,涉及Android針對EditText的監聽技巧,具有一定參考借鑒價值,需要的朋友可以參考下...
- Android
Android控件系列之CheckBox使用介紹
CheckBox和Button一樣,也是一種古老的控件,它的優點在于,不用用戶去填寫具體的信息,只需輕輕點擊,缺點在于只有“是”和“否”兩種情況,但我們往...
- Android
使用RadioButton+Fragment實現底部導航欄效果
這篇文章主要為大家詳細介紹了使用RadioButton+Fragment實現底部導航欄效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...
- Android
Android開發筆記之:對實踐TDD的一些建議說明
本篇文章是對Android中實踐TDD的一些建議進行了詳細的分析介紹,需要的朋友參考下...
- Android
解析Android應用程序運行機制
這篇文章主要介紹了Android應用程序運行機制,有需要的朋友可以參考一下...
- Android
淺談Android系統的基本體系結構與內存管理優化
這篇文章主要介紹了Android系統的基本體系結構與內存管理優化,非常簡潔明了地總結了系統服務及垃圾回收等安卓的一些主要特性,需要的朋友可以參考下...
- Android
Android中掃描多媒體文件操作詳解
這篇文章主要介紹了Android中掃描多媒體文件操作詳解,本文講解了Android中的多媒體文件掃描機制、如何掃描一個剛創建的文件、如何掃描多個文件,需要的朋...