當我們在一個viewpager放一個fragment,當切換viewpager當中的viewpager時,fragment的打印輸出如下:
1.D:\Users\zhongxw>adb logcat -s debug
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
V/debug (17567): onAttach
V/debug (17567): onCreate
V/debug (17567): oncreateview
V/debug (17567): onActivityCreated
V/debug (17567): onResume
切換到別fragment的時打印出:
V/debug (17567): onPause
V/debug (17567): onDestroyView
注意執行了onDestroyView進行了銷毀,而下面的onCreateView也是進行對應的
重新愀復時執行:
V/debug (17567): oncreateview
V/debug (17567): onActivityCreated
V/debug (17567): onResume
再退出:
V/debug (17567): onPause
V/debug (17567): onDestroyView
V/debug (17567): onDestroy
V/debug (17567): onDetach
2.如果是打開退出兩種狀態的切換:
打開:
V/debug (17567): onCreate
V/debug (17567): oncreateview
V/debug (17567): onActivityCreated
V/debug (17567): onResume
退出是:
V/debug (17567): onPause
V/debug (17567): onDestroyView
V/debug (17567): onDestroy
V/debug (17567): onDetach
3.**我們看到都沒有執行onPause函數,onPause()多長發生如果點擊fragment中的內容時或者這時彈出別的app或者說是activity,跳轉到一個新界面,把當前的fragment蓋住了,生命周期通常是這樣的:
D:\Users\zhongxw>adb logcat -s debug
--------- beginning of /dev/log/system
--------- beginning of /dev/log/main
V/debug (17567): onPause
V/debug (17567): onResume
跳進入是onPause(),恢復時是onResume()
4.如果我們fragment已經展示了,我們按home鍵進入後台,再進入前台,則執行:
A。進入後台
V/debug (22269): onPause
B,恢復前台
V/debug (22269): onResume
我們看到這裡前沒有執行onDestroy(),沒有銷毀,所以也沒有執行onCreateView()進行重繪。跟前面3中所描述的切換到別的activity中是一樣的效果。
這裡我沒有打印onStart()跟onStop()函數,,因為onResume以前一定會執行onStart(),在onPause後也會執行onStop()這個函數