Art*_*tem 5 android coroutine kotlin rx-java2 kotlin-coroutines
2020 年,很多安卓开发者都在谈论 Kotlin 协程。我试图理解它以及协程如何在我的项目中帮助我。
所以我的问题是:RxJava 主题的协程中是否有类似的东西?(作为最低要求PublishSubject)。
我想要什么-我用PublishSubject从发送事件ViewModel给我的View。我在onStart()方法上订阅 eventsSubject并在onStop()方法上处理。
所以 Kotlin Coroutines 模拟的最低要求是:
有我的用例示例:
视图模型:
abstract class AbsStateViewModel<State, Event> : AbsViewModel() {
private val stateSubject = BehaviorSubject.create<State>()
private val eventSubject = PublishSubject.create<Event>()
protected val requireState: State
get() = stateSubject.value!!
fun getStateObservable(): Observable<State> = stateSubject
fun getEventObservable(): Observable<Event> = eventSubject
protected fun sendEvent(event: Event) {
eventSubject.onNext(event)
}
protected fun setState(state: State) {
stateSubject.onNext(state)
}
}
Run Code Online (Sandbox Code Playgroud)
和用法:
viewModel.getEventObservable() // called on onAttach()
.subscribe(
this::handleEvent,
this::defaultHandleException
)
.disposeOnDetach() // my extensions
Run Code Online (Sandbox Code Playgroud)
小智 4
是的,在协程中,有类似 rx 主题的东西,即通道。如果您想重现 的行为, PublishSubject您可以使用 BroadcastChannelelse 如果您想重现 的行为, BehaviorSubject您可以使用 ConflatedBroadcastChannel。
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |