gpt4 book ai didi

android - handleLifecycleEvent 和 markState 之间有什么区别(来自 LifecycleRegistry 类)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:36:01 25 4
gpt4 key购买 nike

我无法辨别 LifeCycleRegistry 实例方法、handleLifecycleEventmarkState 之间的区别。根据文档 handleLifecycleEvent 设置当前状态并通知观察者。另一方面,markState 将生命周期移动到给定状态,并将必要的事件分派(dispatch)给观察者。

因此,在这两种方法中都会更改状态并通知观察者,以便他们可以触发适当的回调(根据我目前的理解)。是否存在这两种方法不是一回事的情况?

最佳答案

生命周期使用两个枚举来跟踪生命周期,即事件和状态。因此,Android 提供了两种方法,一种用于设置 Event,另一种用于设置 State,这是有道理的。如果我们看到代码,两者都在做几乎相同的设置状态的事情。

public void markState(@NonNull State state) {
moveToState(state);
}

public void handleLifecycleEvent(@NonNull Lifecycle.Event event) {
State next = getStateAfter(event);
moveToState(next);
}

但不同之处在于,当您没有要匹配的确切事件时,我认为 markState 更有意义。例如来自 SupportActivity 类

protected void onSaveInstanceState(Bundle outState) {
mLifecycleRegistry.markState(Lifecycle.State.CREATED);
super.onSaveInstanceState(outState);
}

这里我们没有任何对应于 onSaveInstanceState 的事件,所以这里 markState 更有意义。

关于android - handleLifecycleEvent 和 markState 之间有什么区别(来自 LifecycleRegistry 类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com