調試fragment的時候發現一個莫名其妙的事情,viewpager中包含4個fragment,其中第一個和第三個fragment是要聯網取得數據的,如圖:
調試
界面剛進去的時候顯示第一個fragment,經過log信息,我發現two fragment居然」偷偷「走了一遍的生命週期!着實把我震驚了! three
而後我滑動到two,發現第三個也「偷」了一遍生命週期,也就是說,手機在顯示第二個不須要聯網的fragment的時候聯網了(由於走了three的生命週期)。 生命週期
而後繼續滑動到第三個fragment,發現one fragment執行了onpause和onstop,four fragment跑了生命週期。如圖: 圖片
到這裏都清楚了,總結一下,就是viewpager顯示fragment的時候不會僅僅顯示展示的那個fragment,而是將前一個,後一個,和正在顯示的fragment的生命週期都跑一遍,這可能也是爲了可以更好地管理和顯示fragment吧。 it
ps: 社區
判斷當前的fragement是否在當前顯示用setUserVisibleHint,上文表示除了此法在生命週期上作文章全是扯淡,這個答案來自德問社區。 fragment