Android之旅--Activity/Service/Fragment 生命周期
Activity的生命周期
Activity_Image.png
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的生命周期
Service_Image.png
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的生命周期
Fragment_Image.png
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的生命周期變化的。
contrast_Image.png
當一個Fragment被創建時
onAttach() --> onCreate() --> onCreateView() --> onActivityCreated()
當這個Fragment對用戶可見時
onStart() --> onResume()
當這個Fragment進入“后臺模式”的時候
onPause() --> onStop()
當這個Fragment被銷毀(或持有它的Activity被銷毀)時
onPause() --> onStop() --> onDestoryView() --> onDestory() --> onDetach()
來自:http://www.jianshu.com/p/3cf90687c3c7