viewPager和Fragment搭配使用时如何解决预加载问题(getUserVisibleHint() 和 setUserVisibleHint())

本文探讨了在使用ViewPager加载多个Fragment的场景下,如何通过getUserVisibleHint()与setUserVisibleHint()方法实现延迟加载,以提升用户体验。详细解析了这两个方法的工作原理及在Fragment生命周期中的调用时机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时就会预加载后面的页面,为了提高用户体验,实现加载延迟。这时我们会用到getUserVisibleHint()与setUserVisibleHint()这两个方法。

当fragment被用户可见时,setUserVisibleHint()会调用且传入true值,当fragment不被用户可见时,setUserVisibleHint()则得到false值。

结论

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

2 setUserVisibleHint() 在fragment所有生命周期之前初始化 3 activity生命周期 和 fragment生命周期 时序并不是按序来的,也就是说fragment的oncreate方法时序并不一定在activity的oncreate方法之后。

使用

@Override
  public void setUserVisibleHint(boolean isVisibleToUser) {
      super.setUserVisibleHint(isVisibleToUser);
      if (isVisibleToUser) {
          //相当于Fragment的onResume,判断此fragment是否可见
    	  load();
      } else {
          //相当于Fragment的onPause
      }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值