android - withStateAtLeast 和 whenStateAtLeast 生命周期扩展方法的区别
问题描述
androidX 包中有两种类似的扩展方法,lifecycle-ktx
签名略有不同。withStateAtLeast
和whenStateAtLeast
。我阅读了文档,但无法理解他们行为的差异。一个关于我们什么时候应该使用哪一个的例子,将不胜感激。
解决方案
查看源代码,whenStateAtLeast在生命周期至少处于所需状态时运行给定块,如果生命周期在 block 运行时移动到较低状态,则暂停该块。
同时withStateAtLeast只是等待生命周期至少处于所需状态并运行该块。所以它保证生命周期状态在它启动块时满足要求,但是如果块暂停,到它恢复时,生命周期可能处于较小的状态甚至被破坏。
因此,withStateAtLeast
如果您需要在生命周期到达状态时(例如用户进入屏幕)并在任何情况下完成其执行,即使用户在执行完成之前离开屏幕,通常也是一个不错的选择。whenStateAtLeast
当块与 UI 一起工作时,它又很有用,它保证每次恢复执行时,生命周期都处于正确状态,因此您可以安全地访问 UI。
推荐阅读
- c# - 贝宝订单请求永远不会回来
- azure - AAD、AADConnect、MSAL 和托管用户错误
- botframework - 如何在发布到频道的帖子中提及使用 CardFactory.adaptiveCard (NodeJS) 的 Bot(不是用户)
- python - Python:这两段代码不应该产生完全相同的结果吗?
- bash - Bash:如何将同一州的多个街道地址分组在一起?
- python - 我的 discord.py tasks.loop() 没有执行
- php - 附加到带有变量的关联数组如何工作
- powershell - Powershell基于一个创建一个新的对象数组,并删除某些项目
- python - Django DRF AttributeError:尝试获取序列化程序“UserMailListSerializer”上字段“ added_email”的值时出现AttributeError
- sql - SSIS 执行 SQL 任务包含插入和选择