我們知道,android系統的四大組件:activity(活動,界面)、service(服務)、broadcastreceiver(廣播接收者)、contentprovider(內容提供者)。這裏從activity開始說起,其中activity是與用戶交互的,是應用的臉面,凡是我們在應用能看到的東西,都是放在activity中的。
我們如過在activity 裏開啓一個fagment他們的生命週期到底是怎麼執行,先後順序又是什麼呢?
fragment 不能獨立存在,它必須嵌入到 activity 中,而且 Fragment 的生命週期直接受所在的 activity 的影 響。
fragment的生命週期,這裏引用了一個圖片來展示:
加載先後順序:(1)先執行fragment的onAttach()、onCreate(),onCreateView, onActivityview會在 activity完成onCreater會調之後調用,
(2)接下來的onStart()\onResume()\onPause()\onStop()回調方法將和Activity的回調方法進行綁定,也就是說與Activity中對應的生命週期相同,
(3)執行完fragment後activity執行ondestory(),之後調用fragment的onDetach();
在這裏順便插幾張activity生命週期相關的示意圖:
Fragment與 Activity 的生命週期有着密切的聯繫,
場景演示 :
切換到該Fragment
1
2
3
4
5
6
|
11-29
14:26:35.095: D/AppListFragment(7649): onAttach
11-29
14:26:35.095: D/AppListFragment(7649): onCreate
11-29
14:26:35.095: D/AppListFragment(7649): onCreateView
11-29
14:26:35.100: D/AppListFragment(7649): onActivityCreated
11-29
14:26:35.120: D/AppListFragment(7649): onStart
11-29
14:26:35.120: D/AppListFragment(7649): onResume
|
屏幕滅掉:
1
2
3
|
11-29
14:27:35.185: D/AppListFragment(7649): onPause
11-29
14:27:35.205: D/AppListFragment(7649): onSaveInstanceState
11-29
14:27:35.205: D/AppListFragment(7649): onStop
|
屏幕解鎖
1
2
|
11-29
14:33:13.240: D/AppListFragment(7649): onStart
11-29
14:33:13.275: D/AppListFragment(7649): onResume
|
切換到其他Fragment:
1
2
3
|
11-29
14:33:33.655: D/AppListFragment(7649): onPause
11-29
14:33:33.655: D/AppListFragment(7649): onStop
11-29
14:33:33.660: D/AppListFragment(7649): onDestroyView
|
切換回本身的Fragment:
1
2
3
4
|
11-29
14:33:55.820: D/AppListFragment(7649): onCreateView
11-29
14:33:55.825: D/AppListFragment(7649): onActivityCreated
11-29
14:33:55.825: D/AppListFragment(7649): onStart
11-29
14:33:55.825: D/AppListFragment(7649): onResume
|
回到桌面
1
2
3
|
11-29
14:34:26.590: D/AppListFragment(7649): onPause
11-29
14:34:26.880: D/AppListFragment(7649): onSaveInstanceState
11-29
14:34:26.880: D/AppListFragment(7649): onStop
|
回到應用
1
2
|
11-29
14:36:51.940: D/AppListFragment(7649): onStart
11-29
14:36:51.940: D/AppListFragment(7649): onResume
|
退出應用
1
2
3
4
5
|
11-29
14:37:03.020: D/AppListFragment(7649): onPause
11-29
14:37:03.155: D/AppListFragment(7649): onStop
11-29
14:37:03.155: D/AppListFragment(7649): onDestroyView
11-29
14:37:03.165: D/AppListFragment(7649): onDestroy
11-29
14:37:03.165: D/AppListFragment(7649): onDetach
|
下面附上兩張圖用來表示framgent 顯示到前臺時 Activity 和 Fragment 生命週期的交互過程:
當啓動時:
當按下back鍵時:
以上內容希望能對大家有幫助,如果有幫助的話,頂下吧!