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),才会加载数据。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值