Android之旅--Activity/Service/Fragment 生命周期

KeenanLyman 8年前發布 | 13K 次閱讀 Activity Android開發 移動開發

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

 

 本文由用戶 KeenanLyman 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!