我曾经使用Channel过将点击事件从 Anko View 类发送到 Activity 类,但是越来越多的Channel功能被标记为已弃用。所以我想开始使用Flowapis。
我迁移了下面的代码:
private val btnProduceChannel = Channel<Unit>()
val btnChannel : ReceiveChannel<Unit> = btnProduceChannel
// Anko
button {
onClick {
btnProduceChannel.send(Unit)
}
}
Run Code Online (Sandbox Code Playgroud)
到:
lateinit var btnFlow: Flow<Unit>
private set
button {
btnFlow = flow {
onClick {
emit(Unit)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我必须像var现在一样标记流属性,这不像以前那么优雅。这种方式对吗?我可以初始化一个的RxSubject像Flow定义属性是什么时候?
编辑:
我带Channel回来,然后使用consumeAsFlow():
private val btnChannel = Channel<Unit>()
// This can be collected only once
val btnFlow = …Run Code Online (Sandbox Code Playgroud)