Fragment延迟加载技术(解决Viewpager预加载fragment)

本文探讨了ViewPager预加载导致的Fragment数据加载问题,特别是当第二个Fragment的网络请求在不应出现时显示。通过分析,找到了Fragment的setUserVisibleHint方法作为解决入口。同时,为避免多次加载数据影响用户体验,引入了标志位来判断Fragment是否已加载过数据。解决方案代码给出。
摘要由CSDN通过智能技术生成

  看到很多朋友问到,如何解决ViewPager预加载fragment的问题,一些因ViewPager预加载fragment而出现的bug。所以今天就写了这篇博客。

  缘由:ViewPager结合fragment,Activity显示的时候,加载ViewPager中的第一个位置的fragment时,第二个位置的fragment也会被加载。打个比方,第二个fragment的onCreateView方法中有个网络请求,加载数据(肯定有个Dialog弹出,"正在请求数据..."),而第一个没有,可是当我们的第一个fragment首次显示到屏幕的时候,会弹出这个提示信息为正在加载数据的Dialog。如果被用户看到了,这就悲剧了。

   那我们能不能在fragment显示在屏幕的时候再加载数据呢?当然,这是可以的,我们可以自己定义一个ViewGroup,来承载我们的Fragment,相当于自己构建一个ViewPager,这样出了啥问题,我们自己也清楚。这种方法相对而言比较麻烦,毕竟官方提供的ViewPager这么好用,为啥要抛弃它。所以我们就必须在Fragment的源码中找到看是否有在Fragment显示的时候执行的方法,结果还真有------->那就是fragment的setUserVisibleHint


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值