Fragment的生命週期以及與Activity生命週期聯動
在學Fragment之前肯定學過了Activity,Activity有屬於自己的生命週期,Fragment基本上和activity 大體一樣,但是有自己特有的生命週期方法,下面我們一起來看一下。
說白了主要看兩張圖,和執行程式碼:
一. Fragment的生命週期
二. 與Activity生命週期的對比
三. 場景演示 :
①啟動Fragment
07-05 11:14:48.791 16273-16273/com.mypractice E/----A Activity----: onCreate
07-05 11:14:48.809 16273-16273/com.mypractice E/----A Activity----: onStart
07-05 11:14:48.809 16273-16273/com.mypractice E/----A Fragment----: onAttach
07-05 11:14:48.809 16273-16273/com.mypractice E/----A Fragment----: onCreate
07-05 11:14:48.809 16273-16273/com.mypractice E/----A Fragment----: onCreateView
07-05 11:14:48.813 16273-16273/com.mypractice E/----A Fragment----: onActivityCreated
07-05 11:14:48.813 16273-16273/com.mypractice E/----A Fragment----: onStart
07-05 11:14:48.813 16273-16273/com.mypractice E/----A Activity----: onResume
07-05 11:14:48.813 16273-16273/com.mypractice E/----A Fragment----: onResume
②鎖屏(注意此處Fragment的onSaveInstanceState方法執行,但是Activity的此方法並未執行,解釋見文末尾註釋):
07-05 11:18:36.007 16273-16273/com.mypractice E/----A Activity----: onPause
07-05 11:18:36.007 16273-16273/com.mypractice E/----A Fragment----: onPause
07-05 11:18:36.007 16273-16273/com.mypractice E/----A Fragment----:onSaveInstanceState
07-05 11:18:36.193 16273-16273/com.mypractice E/----A Activity----: onStop
07-05 11:18:36.194 16273-16273/com.mypractice E/----A Fragment----: onStop
③解鎖:
07-05 11:19:20.898 16273-16273/com.mypractice E/----A Activity----: onRestart
07-05 11:19:20.899 16273-16273/com.mypractice E/----A Activity----: onStart
07-05 11:19:20.899 16273-16273/com.mypractice E/----A Fragment----: onStart
07-05 11:19:20.910 16273-16273/com.mypractice E/----A Activity----: onResume
07-05 11:19:20.910 16273-16273/com.mypractice E/----A Fragment----: onResume
④切換到其它 Fragment(A --> B):
07-05 11:21:02.961 16273-16273/com.mypractice E/----A Activity----: onPause
07-05 11:21:02.961 16273-16273/com.mypractice E/----A Fragment----: onPause
07-05 11:21:02.999 16273-16273/com.mypractice E/----B Fragment----: onAttach
07-05 11:21:02.999 16273-16273/com.mypractice E/----B Fragment----: onCreate
07-05 11:21:03.000 16273-16273/com.mypractice E/----B Fragment----: onCreateView
07-05 11:21:03.002 16273-16273/com.mypractice E/----B Fragment----: onActivityCreated
07-05 11:21:03.002 16273-16273/com.mypractice E/----B Fragment----: onStart
07-05 11:21:03.003 16273-16273/com.mypractice E/----B Fragment----: onResume
07-05 11:21:03.900 6921-6921/kj.com.mypractice E/----A Fragment----: onSaveInstanceState
07-05 11:21:03.452 16273-16273/com.mypractice E/----A Activity----: onStop
07-05 11:21:03.452 16273-16273/com.mypractice E/----A Fragment----: onStop
⑤Back鍵返回(B --> A):
07-05 11:23:32.094 16273-16273/com.mypractice E/----B Fragment----: onPause
07-05 11:23:32.099 16273-16273/com.mypractice E/----A Activity----: onRestart
07-05 11:23:32.100 16273-16273/com.mypractice E/----A Activity----: onStart
07-05 11:23:32.100 16273-16273/com.mypractice E/----A Fragment----: onStart
07-05 11:23:32.100 16273-16273/com.mypractice E/----A Activity----: onResume
07-05 11:23:32.100 16273-16273/com.mypractice E/----A Fragment----: onResume
07-05 11:23:32.515 16273-16273/com.mypractice E/----B Fragment----: onStop
07-05 11:23:32.516 16273-16273/com.mypractice E/----B Fragment----: onDestroyView
07-05 11:23:32.516 16273-16273/com.mypractice E/----B Fragment----: onDestroy
07-05 11:23:32.516 16273-16273/com.mypractice E/----B Fragment----: onDetach
⑥Home鍵回到桌面:
07-05 11:25:56.622 16273-16273/com.mypractice E/----A Activity----: onPause
07-05 11:25:56.623 16273-16273/com.mypractice E/----A Fragment----: onPause
07-05 11:51:26.861 6921-6921/kj.com.mypractice E/----A Fragment----: onSaveInstanceState
07-05 11:25:57.252 16273-16273/com.mypractice E/----A Activity----: onStop
07-05 11:25:57.252 16273-16273/com.mypractice E/----A Fragment----: onStop
⑦Home鍵之後返回應用:
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Activity----: onRestart
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Activity----: onStart
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Fragment----: onStart
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Activity----: onResume
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Fragment----: onResume
⑧退出Activity(即退出Fragment):
07-05 11:28:17.679 16273-16273/com.mypractice E/----A Activity----: onPause
07-05 11:28:17.679 16273-16273/com.mypractice E/----A Fragment----: onPause
07-05 11:28:18.109 16273-16273/com.mypractice E/----A Activity----: onStop
07-05 11:28:18.110 16273-16273/com.mypractice E/----A Fragment----: onStop
07-05 11:28:18.110 16273-16273/com.mypractice E/----A Activity----: onDestroy
07-05 11:28:18.110 16273-16273/com.mypractice E/----A Fragment----: onDestroyView
07-05 11:28:18.111 16273-16273/com.mypractice E/----A Fragment----: onDestroy
07-05 11:28:18.111 16273-16273/com.mypractice E/----A Fragment----: onDetach
補充:兩Activity跳轉生命週期方法執行順序:
① A --> B
07-05 11:32:23.460 27917-27917/kj.com.mypractice E/----A Activity----: onPause
07-05 11:32:23.513 27917-27917/kj.com.mypractice E/----B Activity----: onCreate
07-05 11:32:23.513 27917-27917/kj.com.mypractice E/----B Activity----: onStart
07-05 11:32:23.513 27917-27917/kj.com.mypractice E/----B Activity----: onResume
07-05 11:32:23.953 27917-27917/kj.com.mypractice E/----A Activity----: onStop
② B --> A
07-05 11:37:45.538 27917-27917/kj.com.mypractice E/----B Activity----: onPause
07-05 11:37:45.547 27917-27917/kj.com.mypractice E/----A Activity----: onRestart
07-05 11:37:45.547 27917-27917/kj.com.mypractice E/----A Activity----: onStart
07-05 11:37:45.547 27917-27917/kj.com.mypractice E/----A Activity----: onResume
07-05 11:37:45.976 27917-27917/kj.com.mypractice E/----B Activity----: onStop
07-05 11:37:45.976 27917-27917/kj.com.mypractice E/----B Activity----: onDestroy
註釋:
1、資源相關的系統配置被改變,比如橫豎屏、輸入法顯示和隱藏 2、系統記憶體不足時 3、HOME鍵或者鎖屏