java - 行为主题 onnext on next on different thread
问题描述
我想在 b.subject 调用 onnext 时更改线程
var bs: BehaviorSubject<CarResponse?> = BehaviorSubject.create<CarResponse?>();
bs
.observeOn(Schedulers.io())
.doOnNext { service.GetMakeForManufacturer(q)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.blockingSingle()!! }
所以我需要使改造服务调用异步。它只能改变线程。但结果是无用的。我怎样才能为 onnext 而不是 doonnext() 做呢?
此代码在主线程和块上运行
bs
//.observeOn(Schedulers.io())
.onNext(service.GetMakeForManufacturer(q)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.blockingSingle()!!)
甚至它的(bs.onnext)仍在主线程上运行
var bs: BehaviorSubject<CarResponse?> = BehaviorSubject.create<CarResponse?>();
fun call(q: String): BehaviorSubject<CarResponse?>? {
Log.e("Pageviewmodel",Thread.currentThread().name)
service.GetMakeForManufacturer(q)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.newThread())
.subscribe({s-> run { bs.onNext(s!!); Log.e("Pageviewmodel", Thread.currentThread().name) } })
解决方案
推荐阅读
- python - 列表理解的项目,在 z3 模型中部分评估
- javascript - 在对象内部的函数中访问对象的属性
- linux - 重建/重新编译 Debian 9 软件包
- android - 获取根元素必须格式正确。android构建中的错误
- arrays - 使用 angular 的 *ngFor 遍历对象数组
- c# - 包含日期、时间和字符串 ref 的列表
- pytorch - 如何在 Torchvision 的 Inception V3 中将钩子附加到 ReLU
- kubernetes - traefik 2.0 无法从云服务 LBS 捕获 kubernetes 集群中的网络
- angular - 在多个模块之间共享一个组件,无需 app.module.ts 文件
- python - 从 Python 笔记本更新 IBM DB2 Cloud 中的表