Android複習之旅--Activity/Service/Fragment 生命週期
Activity的生命週期
onCreate(Bundle savedlnstanceState) --> 初始化,僅僅被呼叫一次
onStart() --> 開始
onRestart() --> 重置
onResume() --> 獲取焦點
onPause() --> 暫停
onStop() --> 停止
onDestroy() --> 銷燬
開始Activity:在這個階段依次執行3個生命週期的方法
onCreate() –> onStart() –> onResume()
Activity失去焦點:如果Activity失去焦點,會依次執行2個生命週期的方法
onPause() –> onStop()
Activity重新獲得焦點:如果Activity重新獲得焦點,會依次執行3個生命週期的方法
onRestart() –> onStart() –> onResume()
關閉Activity:當Activity被關閉時會依次執行3個生命週期的方法
onPause() –> onStop() –> onDestroy()
橫豎屏切換的生命週期
Activity onDestory() –> onCreate() –> onStart() –> onResume()
Service的生命週期
onCreate() --> 初始化,第一次startService時呼叫
onStartCommand() --> 啟動
onBind() --> 繫結
onUnbind() --> 解綁
onDestory() --> 銷燬
在Service每一次的開啟關閉過程中,只有onStartCommand()可被多次呼叫(通過多次startService()呼叫),其他onCreate(),onBind(),onUnbind(),onDestory()在一個生命週期中只能被呼叫一次。
對於startService()服務:
onCreate() –> onStartCommand()
如果context.stopService() –> onDestory()
對於bindService()服務:
onCreate() –> onBind()
如果Activity被銷燬 –> onUnbind() –> onDestory()
Fragment的生命週期
onAttach() --> 當Fragment被加入Activity時呼叫,可以獲得Activity傳遞的值
onCreate() --> 例項化成員變數
onCreateView() --> 給當前Fragment繪製UI佈局,可以使用執行緒更新UI
onActivityCreated() --> 表示Activity執行onCreate()方法完成時呼叫
onStart() --> 開始
onResume() --> 獲得焦點
onPause() --> 暫停
onStop() --> 停止
onDestoryView() --> 表示Fragment銷燬相關聯的UI佈局
onDestory() --> 銷燬Fragment物件
onDetach() --> 脫離Activity
一旦Activity進入resumed狀態(也就是running狀態),你就可以自由地新增和刪除Fragment了。因此,只有當Activity在resumed狀態時,Fragment的生命週期才能獨立的運轉,其它時候是依賴於Activity的生命週期變化的。
當一個Fragment被建立時
onAttach() –> onCreate() –> onCreateView() –> onActivityCreated()
當這個Fragment對使用者可見時
onStart() –> onResume()
當這個Fragment進入“後臺模式”的時候
onPause() –> onStop()
當這個Fragment被銷燬(或持有它的Activity被銷燬)時
onPause() –> onStop() –> onDestoryView() –> onDestory() –> onDetach()