Ely*_*lye 7 android android-lifecycle kotlin kotlin-flow kotlin-stateflow
最近,自 android 生命周期库版本 2.6.0-alpha01 以来,我们有了一个新的 API,即
\ncollectAsStateWithLifecycle(...)\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n如果您\xe2\x80\x99 使用 Jetpack Compose 构建 Android 应用程序,请使用\n
\ncollectAsStateWithLifecycle可组合函数(而不是\ncollectAsState)
我尝试一下,对于流动(冷流)例如
\n val counter = flow {\n var value = 0\n while (true) {\n emit(value++)\n delay(1000)\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n拥有它是有用的
\nflow.collectAsStateWithLifecycle(0)\nRun Code Online (Sandbox Code Playgroud)\n但是如果我们有一个像 mutableStateFlow 这样的热流
\nval stateFlow = MutableStateFlow(0)\nRun Code Online (Sandbox Code Playgroud)\n拥有似乎没什么用
\nstateFlow.collectAsStateWithLifecycle(0)\nRun Code Online (Sandbox Code Playgroud)\n鉴于它不会阻止任何排放。
\n我说collectAsStateWithLifecycle只对冷流有用,对热流无效,这样说对吗?
如果我错了,你能给我举一个collectAsStateWithLifecycle对热流也有用的例子吗?
Sty*_*kis 10
对于任何流量依赖于消费者来保持热的情况,它都是有用的。
如果你只是val stateFlow = MutableStateFlow(0)按照你说的去做,那不会改变任何事情,不会。
然而,一种重要的“热流”情况是,使用stateIn函数,使用WhileSubscribed策略作为的SharingStarted参数,流变得热stateIn。在这种情况下使用订阅collectAsStateWithLifecycle意味着当生命周期至少未STARTED或您传递给 的任何内容时,流将不会有订阅者minActiveState。
| 归档时间: |
|
| 查看次数: |
5739 次 |
| 最近记录: |