【发布时间】:2018-03-03 00:05:46
【问题描述】:
我正在使用 web3 构建一个项目。
web3j.ethGetBalance("0x2910543af39aba0cd09dbb2d50200b3e800a63d2", latestBlock)
.observable()
.subscribeOn(rx.schedulers.Schedulers.io())
//This needs to be on the main thread!
//But i only have access to rx.schedulers not AndroidSchedulers.mainThread()
.observeOn(rx.schedulers.Schedulers.io())
.subscribe(block -> {
ethereumTV.setText(block.getBalance() + "");
}, error -> {
error.printStackTrace();
});
但是 web3 使用的是旧版本的 RxJava,我无法访问 mainThread 来观察它(更新文本视图等)
有什么想法吗?
【问题讨论】:
-
compile 'io.reactivex:rxandroid:1.2.1'/* 因为 RxAndroid 版本很少而且相差甚远,所以建议您也/ /明确地依赖 RxJava 的最新版本来修复错误和新功能。* /compile 'io.reactivex:rxjava:1.1.6' -
这是我的问题 -> 'rx.Observable' 中的 'observeOn(rx.Scheduler)' 不能应用于 '(io.reactivex.Scheduler)'
-
如果您无法添加
rxandroid依赖项来获取AndroidSchedulers,那么您可能必须构建自己的Scheduler。无论如何,主线程调度程序只是handler.post(...)的一个包装器。 -
找出你的rx版本,看看有没有对应的rxandroid版本,包名一样
-
你需要使用
rx.android.AndroidSchedulers.mainThread()