基本介绍
setMaxLifecycle定义在FragmentTransaction中,和之前的add、attach、remove、detach、show、hide等方法是并列关系;
FragmentTransaction
public FragmentTransaction setMaxLifecycle(@NonNull Fragment fragment,
@NonNull Lifecycle.State state) {
addOp(new Op(OP_SET_MAX_LIFECYCLE, fragment, state));
return this;
}
参数解读:
- fragment 即需要操作的Fragment对象,前提条件是这个fragment必须已经加到FragmentManager中;
- state Lifecycle.State枚举类型,该参数的使用条件是至少是Lifecycle.State.CREATED,否则报IllegalArgumentException异常
Lifecycle.State一共有五个状态,最低要求是Lifecycle.State.CREATED,所以该方法可用的参数有CREATED、STARTED、RESUMED,State和生命周期方法有何区别,下面简单解释一下:
生命周期状态理解
在Fragment中,定义了五种State,这里的State并非上面说Lifecycle.State,但是逻辑基本上是一致的;
- INITIALIZING 初始状态
- CREATED 已创建状态
- ACTIVITY_CREATED 完全创建,但是没有started
- STARTED 创建并启动,可见不可操作
- RESUMED 创建启动并可操作
本文内容只对CREATED、STARTED、RESUMED这三个状态讲解,由于Fragment中定义的mState和Lifecycle.State不是同一状态,在本文视为同一概念;
与生命周期对应关系
各位肯定都知道Fragment生命周期有onDestory,onStop等方法,但是状态却没有这么多,那么如何标识状态和对应关系,下面给出对应关系;
首先,我把生命周期方法从onCreate->onCretateView-&g