首页 > 解决方案 > 转换 Observable> 列出

问题描述

我想从中获取MutableLiveData<List<Country>>()对象Observable<List<Country>>,但我找不到方法。

我正在使用下面的实现,但它不起作用。有没有其他方法可以实现它,或者我当前的实现做错了什么?

dataManagerAnonymous.countries.toList().blockingGet().single()

上面的代码显示NetworkOnMainThreadException并崩溃了应用程序。

标签: androidkotlinrx-javarx-androidandroidx

解决方案


dataManagerAnonymous
    .countires
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe { result ->
        // result is List<Country>
    }

dataManagerAnonymous.countires可能会执行网络请求,这应该在后台线程上完成,以防止 UI 线程阻塞。subscribeOn(Schedulers.io())在后台线程上调用您的请求。observeOn(AndroidSchedulers.mainThread())允许您在 UI 线程上使用此调用的结果。当您的请求成功完成并且结果数据准备好处理时,将调用订阅块。


推荐阅读