RxJava对象花费太多时间进行初始化

时间:2018-07-05 13:37:10

标签: android rx-java2 android-architecture-components

我正在使用这种结构来处理多个数据加载响应。问题在于此代码会影响片段的开始时间(大约+2秒)。 iframe函数被放置在load()中。 ViewModel方法调用Fragment#onResume()方法。如何优化此代码以减少ViewModel#load()的启动时间?

Fragment

UPD

如果我将此函数包装到fun load() { Single.zip( apiDataManager1.getSingle().subscribeOnIo().observeOnMain(), apiDataManager2.getSingle().subscribeOnIo().observeOnMain(), apiDataManager3.getSingle().subscribeOnIo().observeOnMain(), Function3<Any, Any, Any, Unit> { _, _, _ -> // process data } ) .subscribeOnIo() .observeOnMain() .subscribe() } 中,则一切正常。我怎么只能用Rx做到这一点?

1 个答案:

答案 0 :(得分:0)

尝试以其他方式启动链,指定观察者。不确定是否要这样做,但是可能不应该将Function3中的数据合并到主线程中:

  Single.defer(() -> Single.just(true))
            .observeOn(Schedulers.io())
            .flatMap( any -> Single.zip(
               apiDataManager1.getSingle().subscribeOnIo(),
               apiDataManager2.getSingle().subscribeOnIo(),
               apiDataManager3.getSingle().subscribeOnIo(), { _, _, _ ->
              // process data
               })).subscribeOnIo()
        .observeOnMain()
        .subscribe()