Consuming flows safely in Jetpack Compose 笔记
对比 collectAsState
和 collectAsStateWithLifecycle
collectAsState | collectAsStateWithLifecycle | |
---|---|---|
不同点 | 没有生命周期感知,在App退到后台依然保持对流的 订阅 状态 | 在App退到后台退出对流的 订阅 状态 |
应用场景 | 在Android开发上不建议使用,以后Compose面向多平台可能会使用。 | 替代 collectAdState 用于转换 Flow 和 State |
测试一下,令 StateFlow
在 最后一个订阅者 消失之后 stop the sharing coroutine
1 | val numberFlow: StateFlow<Int> = mutableNumberFlow.onEach { |
测试结果
- collectAsState 持续打印 注释1
- collectAsStateWithLifecycle 在退到后台5s后停止打印 注释1
结论,为了节省电量对用户友好,建议使用collectAsStateWithLifecycle
。
之前使用
collectAsState
也没什么啦,反正Compose在后台也不会组合啊。就省点内存也没省多少,不过有就用吧。
评论