我已经阅读了 Android 中的新架构组件。所以,我想问一下什么是生命周期观察者,我们为什么需要它们?在什么情况下有用?感谢您的回答!
原文由 Nazarii Moshenskiy 发布,翻译遵循 CC BY-SA 4.0 许可协议
我已经阅读了 Android 中的新架构组件。所以,我想问一下什么是生命周期观察者,我们为什么需要它们?在什么情况下有用?感谢您的回答!
原文由 Nazarii Moshenskiy 发布,翻译遵循 CC BY-SA 4.0 许可协议
@OnLifecycleEvent
已被 弃用,因此许多曾经在这里有用的答案不再有用。如果您当前尚未使用 Java 8,则需要先更新您的 build.gradle
。我们现在可以利用 DefaultLifecycleObserver
或 LifecycleEventObserver
。请参阅下面的示例。
首先,您可以使用 ProcessLifecycleOwner
获取应用程序的生命周期:
ProcessLifecycleOwner.get().getLifecycle()
DefaultLifecycleObserver
:
lifecycle.addObserver(object: DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
super.onResume(owner)
TODO()
}
override fun onPause(owner: LifecycleOwner) {
TODO()
super.onPause(owner)
}
})
LifecycleEventObserver
:
lifecycle.addObserver(object: LifecycleEventObserver {
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
when (event) {
Lifecycle.Event.ON_RESUME -> TODO()
Lifecycle.Event.ON_PAUSE -> TODO()
else -> { }
}
}
})
如何更新到 Java 8 以及为什么不推荐使用 OnLifecycleEvent
的解释: https ://stackoverflow.com/a/70384221/3422470
原文由 James 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
您可以使用 ProcessLifecycleOwner 获取应用程序的生命周期并添加一个类作为这些事件的观察者。您可以在应用程序类中实现 LifecycleObserver:
// 添加这些生命周期方法以观察您的应用程序何时进入后台或前台:
// 在你的 build.gradle 文件中添加以下内容
//也在活动或片段中
您还可以使用它们通过创建实现 LifecycleObserver 的不同组件来降低代码的复杂性,然后将活动的生命周期传递给这些组件。通过这种方式,您可以将巨大的复杂性拆分为不同的组件。
}
这样您就可以在单独的组件中监听活动或片段生命周期事件。
我们还可以在 Activity 中手动获取生命周期实例的当前状态,我们可以通过使用它的 getCurrentState ()
State 也有一个 isAtLeast () 方法,我们可以使用它来与当前生命周期状态进行比较