Activity與Fragment生命週期交互

我們知道,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鍵時:



  以上內容希望能對大家有幫助,如果有幫助的話,頂下吧!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章