如何通过活动娱乐使用RxJava进行后台操作?

时间:2018-10-28 14:34:03

标签: android rx-java2

我对ReactiveX还是陌生的,正在尝试弄清楚如何完成下一个任务。我想为此使用ReactiveX(出于教育目的),尽管可能不合适。所以,更重要的是。

  1. 用户在后台启动异步操作。
  2. 操作以结果或错误结束。
  3. 即使Android在操作完成前重新创建了活动,活动也必须显示适当的消息

困难是什么?

  1. 活动只能在“恢复”状态下接收结果
  2. 活动可以被破坏和重新创建,并且毕竟必须接收操作结果。

现在,我通过LiveData和ViewModel实现了它。

class X : ViewModel{
    val result: MutableViewModel<Event<Result>>
    fun op(){
        Completable.fromAction {...}
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
            { result.value = ... }, 
            { throwable -> result.value = ...})
    }
}

我从hereEvent<T>的地方

为了简化理解,我简化了上面的代码。它起作用了,但是有代码味。功能与其结果之间没有明确的关系。假设函数返回Observable,活动将其存储到ViewModel并对其进行订阅。但是活动暂停呢? LiveData会自动执行此操作。以及如何从已破坏和已创建的活动(例如配置更改)转移订阅?如何自动退订和订阅结果?是否可以通过RxJava?

0 个答案:

没有答案