[英]convert Observable<RealmResults<T>>> into Observable<List<T>>>
[英]Convert Observable<List<T>> to List<T>
我想從Observable<List<Country>>
獲取MutableLiveData<List<Country>>()
對象,但我找不到方法。
我正在使用下面的實現,但它不起作用。 有沒有其他方法可以實現它,或者我當前的實現有什么問題?
dataManagerAnonymous.countries.toList().blockingGet().single()
上面的代碼顯示了NetworkOnMainThreadException
並使應用程序崩潰。
dataManagerAnonymous
.countires
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { result ->
// result is List<Country>
}
dataManagerAnonymous.countires
可能會執行網絡請求,應該在后台線程上執行網絡請求,以防止UI線程阻塞。 subscribeOn(Schedulers.io())
在后台線程上調用您的請求。 observeOn(AndroidSchedulers.mainThread())
允許您在UI線程上使用此調用的結果。 當您的請求已成功完成並且結果數據已准備好處理時,將調用訂閱塊。
此擴展方法將Observable<T>
轉換為MutableLiveData<T>
:
fun <T> Observable<T>.asMutableLiveData() = object : MutableLiveData<T>() {
var disposable: Disposable? = null
override fun onActive() {
super.onActive()
disposable = this@asMutableLiveData.subscribe(this::postValue)
}
override fun onInactive() {
super.onInactive()
disposable?.dispose()
}
}
...
dataManagerAnonymous.countries.asMutableLiveData()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.