Android setMaxLifecycle和BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT浅析

前言

最近公司动荡,我在的项目受大环境影响收益每年下滑,可能要领盒饭了,所以最近都在复习相关基础内容,毕竟小脑袋瓜会忘记以前学过的东西。
在ViewPager和Fragment的懒加载中,具体的原理是怎么样的呢?为什么能只执行显示的Fragment的onResume方法?

疑问

借用一篇文章的说明

1.Lifecycle.State.STARTED对应Fragment的STARTED状态,如果当前Fragment状态低于STARTED,那么Fragment的状态会变为STARTED,以当前Fragment状态为CREATED为例,接下来会依次执行onCreateView()、onActivityCreate()和onStart()方法;
2.如果当前Fragment状态高于STARTED,也就是RESUMED,那么Fragment的状态会被强制降为STARTED,接下来会执行onPause()方法。

疑问一:设置STARTED后是否执行onResume?那是否能交互?
疑问二:FragmentPagerAdapter如果设置STARTED的话,就不会执行到onResume方法,懒加载就无法实现,更没有降级一说?

探索

疑问一:

实践是检验最好的结果,
设置CREATE的:只走了onCreate方法,onStart和onResume不触发,fragment也不显示
设置STARTED的话:不执行onResume,但也不影响页面可交互。

前备知识在疑问二有记录

疑问二

原有的懒加载是用 setUserVisibleHint实现,但查看源码已经给设置成@Deprecated
在这里插入图片描述
注释的setMaxLifecycle是什么呢?单看意思就是最大生命周期,就是一个生命周期阻断的作用。
在这里插入图片描述
用法如下

  FragmentTransaction mCurTransaction = getSupportFragmentManager().beginTransaction();
  mCurTransaction.setMaxLifecycle(mCurrentPrimaryItem, Lifecycle.State.STARTED);

其中的入参中LifeCycle.State是个枚举类型,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值