gpt4 book ai didi

android - RxJava 在主线程中运行部分平面图

转载 作者:行者123 更新时间:2023-11-29 14:20:15 25 4
gpt4 key购买 nike

您好,我正在尝试实现一个将两个请求链接在一起的单一可观察对象。

在我发出的两个请求之间,我通知回调以使用请求一个的响应更新 UI,然后在 Schedulaers.io 线程中启动下一个请求。

我遇到的问题是它也尝试从 schedulars.io 线程更新 UI,结果导致 ui 线程中没有任何更新。

我在 Android 中的 RunOnUiThread 代码块上冷包装了回调,但想知道是否有更优雅的方式来实现它?

我检查了协程,它似乎只是处理将一段代码放在一个单独的线程中。

这是我当前的代码

override fun getHomeScreenInformation() {
delegator.requestOne()
.flatMap { responseOne->
homeScreenCallBack.onResponseOneRecieved(responseOne)
delegator.requestTwo()
}
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(
{responseTwo-> homeScreenCallBack.onResponseTwoRecieved(responseTwo)},
{error -> homeScreenCallBack.onError()}
)
}

最佳答案

根据需要多次应用 observeOn(AndroidSchedulers.mainThread()):

delegator.requestOne()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) // <----------------------
.flatMap { responseOne ->
homeScreenCallBack.onResponseOneRecieved(responseOne)
delegator.requestTwo()
.subscribeOn(Schedulers.io()) // <----------------------
}
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{responseTwo-> homeScreenCallBack.onResponseTwoRecieved(responseTwo)},
{error -> homeScreenCallBack.onError()}
)

关于android - RxJava 在主线程中运行部分平面图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48249486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com