Fragment 的getUserVisibleHint()与setUserVisibleHint()

来源:互联网 发布:mac air怎么截屏 编辑:程序博客网 时间:2024/06/05 10:36

Android应用开发过程中,ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时若加载的内容较多,就可能导致整个应用启动速度缓慢,影响用户体验。

为了提高用户体验,我们会使用一些懒加载方案,实现加载延迟。这时我们会用到getUserVisibleHint()与setUserVisibleHint()这两个方法


在传统的fragment生命周期里也看不到这个函数。


fragment是如何知道自己时候用户可见?

setUserVisibleHint() 在上图所示fragment的生命周期的什么位置?

先说结论,


viewpager监听切换tab事件,tab切换一次,执行一次setUserVisibleHint()方法

setUserVisibleHint() 在 上图所示fragment所有生命周期之前,无论viewpager是在activity哪个生命周期里初始化。

activity生命周期 和 fragment生命周期 时序并不是按序来的,也就是说fragment的oncreate方法时序并不一定在activity的oncreate方法之后。


执行setAdapter的时候,会调用setUserVisibleHint()方法,并且,只有当setAdapter方法执行完之后,才会进入到Fragment到生命周期,因此setUserVisibleHint()方法在所有生命周期之前被调用。


原创粉丝点击