viewpager中fragment的生命周期管理 - i_bobby - 开源中国社区
调试fragment的时候发现一个莫名其妙的事情,viewpager中包含4个fragment,其中第一个和第三个fragment是要联网取得数据的,如图:
界面刚进去的时候显示第一个fragment,通过log信息,我发现two fragment竟然”偷偷“走了一遍的生命周期!着实把我震惊了!
然后我滑动到two,发现第三个也“偷”了一遍生命周期,也就是说,手机在显示第二个不需要联网的fragment的时候联网了(因为走了three的生命周期)。
然后继续滑动到第三个fragment,发现one fragment执行了onpause和onstop,four fragment跑了生命周期。如图:
到这里都清楚了,总结一下,就是viewpager显示fragment的时候不会仅仅显示展现的那个fragment,而是将前一个,后一个,和正在显示的fragment的生命周期都跑一遍,这可能也是为了能够更好地管理和显示fragment吧。
ps:
判断当前的fragement是否在当前显示用setUserVisibleHint,上文表示除了此法在生命周期上做文章全是扯淡,这个答案来自德问社区。