withStateAtLeast 和 whenStateAtLeast 生命周期扩展方法的区别

Difference between withStateAtLeast and whenStateAtLeast lifeCycle extension methods

androidX lifecycle-ktx包中有两个相似的扩展方法,只是签名略有不同。 withStateAtLeast and whenStateAtLeast。我阅读了文档,但无法理解他们行为的差异。一个关于我们何时应该使用哪个的例子,将不胜感激。

查看源代码,whenStateAtLeast 运行 当生命周期至少处于所需状态时,给定块 如果生命周期移动到更小,则挂起块块状态为 运行ning.

同时withStateAtLeast只是等待生命周期至少处于要求的状态并且运行s 块。所以它保证生命周期状态在它启动块时满足要求,但是如果块挂起,到它恢复时,生命周期可以处于较小的状态甚至被销毁。

所以一般来说,如果你需要在生命周期达到状态(例如用户进入屏幕)时 运行 一个块并在任何情况下完成它的执行,即使是用户在执行完成之前离开屏幕。当块与 UI 一起工作时,whenStateAtLeast 又很有用,它保证每次恢复执行时,生命周期都处于正确的状态,因此您可以安全地访问 UI。