Fragmentation如何兼容新版本的setMaxLifecycle

本文探讨了在使用Fragmentation库时遇到的新版本setMaxLifecycle方法带来的兼容性问题。文章指出,当ViewPager配合setMaxLifecycle时,所有Fragment会被错误地标记为可见,导致懒加载等问题。作者提出了三种解决方案:等待作者修复、自行修改源码或回退到旧版。文章详细讲解了如何修改源码以解决此问题,包括替换onActivityCreated为onStart和onResume,并调整相应生命周期方法。最后,作者留下了疑问,为何没有提供兼容旧版本的选项,并建议读者参考提供的代码进行适配。
摘要由CSDN通过智能技术生成

看这篇文章前,大家应该先对setMaxLifecycle有所了解。

上年年末,谷歌为新版本的Fragment添加了控制其在ViewPager中的生命周期的新方式——setMaxLifecycle(而ViewPager2中默认且只有这个方式)。
听说后面还要把onActivityCreated砍了,注意下。

setMaxLifecycle的添加,简化了ViewPager在切换对Fragment可见性判断的复杂度,但是也增加了一些操X的问题:如果你使用了ViewPagersetMaxLifecycle。因为生命周期改变了,你的程序可能要做出相应的适配。
如果刚好你在用Fragmentation,又碰上了ViewPagersetMaxLifecycle,那么你就会发现只要打开了ViewPager所属的页面,ViewPager容器内的所有Fragment都会立刻调用了supportVisible()可见可见函数,无论这些Fragment是不是都显示了。当然,onLazyInitView懒加载也被调用了。

目前我所知道有三种解决办法,分享下

1、找作者或者接手Fragmentation项目的大佬解决这个问题。
2、自己动手丰衣足食
3、用回ViewPagerBEHAVIOR_SET_USER_VISIBLE_HINT

方法这么多,足足有三个,我们来用下排除法找答案。
第一个呢,我也提了issue了,就看接手大佬能不能看到了。
第二个呢,需要自己download整个项目下来改,下文会讲
第三个呢,如果你用的ViewPager1,这可能就是换个Adapter或者改个参数的事,如果你用的是V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值