Android WithState至少和WhenState至少生命周期扩展方法之间的差异

Android WithState至少和WhenState至少生命周期扩展方法之间的差异,android,kotlin-coroutines,android-lifecycle,android-jetpack,Android,Kotlin Coroutines,Android Lifecycle,Android Jetpack,androidXlifecycle ktx包中有两种类似的扩展方法,但签名略有不同。和。我看了医生,但不明白他们的行为有什么不同。请举一个关于何时应该使用哪一个的示例。查看源代码,在生命周期至少处于所需状态时运行给定的块,如果在块运行时生命周期移动到较小的状态,则挂起该块 同时,只需等待生命周期至少处于所需状态并运行块。因此,它保证生命周期状态在启动块时满足要求,但如果块暂停,在恢复时,生命周期可能处于较低的状态,甚至被破坏 因此,如果您需要在生命周期达到状态(例如,用户进入屏幕)时运行块并在任

androidX
lifecycle ktx
包中有两种类似的扩展方法,但签名略有不同。和。我看了医生,但不明白他们的行为有什么不同。请举一个关于何时应该使用哪一个的示例。

查看源代码,在生命周期至少处于所需状态时运行给定的块,如果在块运行时生命周期移动到较小的状态,则挂起该块

同时,只需等待生命周期至少处于所需状态并运行块。因此,它保证生命周期状态在启动块时满足要求,但如果块暂停,在恢复时,生命周期可能处于较低的状态,甚至被破坏


因此,如果您需要在生命周期达到状态(例如,用户进入屏幕)时运行块并在任何情况下完成其执行(即使用户在执行完成之前离开屏幕),则通常至少使用状态
是一个不错的选择<代码>Whenstate至少在块与UI一起工作时有用,它保证每次恢复执行时,生命周期都处于正确的状态,因此您可以安全地访问UI。

感谢您的回答。这可能是另一个问题,但我没有弄错,我们应该能够在开始时使用
来收集UI中的流。但谷歌通过定义
作业
并在
顶部
中取消作业来手动处理。我会说是的,大多数时候在使用UI时,最好至少使用
Whenstate
或其对应项-
whenStarted
whenStarted
,因为大多数时候我们应该在UI仅可见时访问它。