Android学习笔记-Fragment的setUserVisibleHint()与getUserVisibleHint()

        在Android开发过程中,有时会使用viewPaper同时加载多个fragment,以实现多个tab页面快速切换。但是若fragment初始的数据较多时,就可能导致该页面加载较慢。

        为了解决上面的问题,我们使用到了懒加载,这时我们就需要使用setUserVisibleHint()与getUserVisibleHint()这两个方法了。

        那么这两个方法是怎么实现数据刷懒加载的呢?

        我们结合fragment的生命周期来解释这个问题,请大家看下面这张fragment的生命周期图:

        先说setUserVisibleHint()的调用时机,viewPaper监听了切换tab事件,切换tab时就会调用setUserVisible()。

        其实setUserVisibleHint()这个方法的首次调用是先于fragment.onCreate()的。当viewPaper初始化完成以后,执行viewPaper.setAdapter()的时候就会执行setUserVisibleHint(),待setAdapter()执行完成以后,才会进入fragment的生命周期。

        接下来我们再说getUserVisibleHint()。它的原理比较简单,我就直接上源码了

        大家可以看见他就是返回一个boolean类型的值,那么这个值的含义是什么呢?

        还是回到setUserVisibleHint()这个方法,大家直接看源码吧

        大家可以看见源码中对这个参数的说明,当它为true时表示这个fragment是可见的。这个时候就比较明显了,getUserVisibleHint()的含义就是获取该fragment是否为可见的状态值。

这个时候在给大家看看上面说的懒加载是怎么实现的吧。

 我们在调用setUserVisibleHint()时加载数据时,一般都会调用getUserVisibleHint()获取当前fragment是否可见,只有当fragment为可见状态时(getUserVisibleHint()返回值为ture),才会加载数据。

猜你喜欢

转载自blog.csdn.net/HaveFun_Wine/article/details/128236565