Google弃用Android上的fragment的onActivityCreated()方法,并建议使用LifeCycleObserver:
To get a callback specifically when a Fragment activity's
* {@link Activity#onCreate(Bundle)} is called, register a
* {@link androidx.lifecycle.LifecycleObserver} on the Activity's
* {@link Lifecycle} in {@link #onAttach(Context)}, removing it when it receives the
* {@link Lifecycle.State#CREATED} callback.
我尝试按推荐的方式进行,但是我在Logcat中观察到的仅仅是状态:已初始化。
private lateinit var lifecycleObserver: LifecycleObserver
override fun onAttach(context: Context) {
super.onAttach(context)
hostActivity = context as HostActivity
lifecycleObserver = object : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate() {
Logger.tag("SOME-TAG")d("State: ${lifecycle.currentState}")
if(lifecycle.currentState.isAtLeast(Lifecycle.State.CREATED)) {
Logger.tag("SOME-TAG").d("CREATED")
hostActivity.lifecycle.removeObserver(lifecycleObserver)
}
}
}
hostActivity.lifecycle.addObserver(lifecycleObserver)
}
以上代码有何问题?
更新1:看起来我忘记使用hostActivity.lifecycle.currentState并检查了片段的生命周期,而不是活动的生命周期。
更新2:根据Google建议的方法,在点击一个片段返回到另一个片段时,对于1个主机活动和2个片段不起作用,因为onAttach从未被调用,但onActivityCreated被调用。