Activity.runOnUiThread()
的作用如下:
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
这意味着,如果我在UI线程中,它会立即运行操作;如果不是,则将操作发布到处理程序。 我正在寻找类似此功能的RxJava Scheduler。 它是否存在?
Activity.runOnUiThread()
的作用如下:
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
这意味着,如果我在UI线程中,它会立即运行操作;如果不是,则将操作发布到处理程序。 我正在寻找类似此功能的RxJava Scheduler。 它是否存在?
是的,很简单。
getSomeObservable().observeOn(AndroidSchedulers.mainThread())
在.observeOn(AndroidSchedulers.mainThread())之后,您可以订阅您的observable并且回调将会进入主线程。
.subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {
Log.i(TAG,Thread.currentThread().getName());
}
@Override
public void onError(Throwable e) {
Log.i(TAG,Thread.currentThread().getName());
}
@Override
public void onNext(Object o) {
Log.i(TAG,Thread.currentThread().getName());
}
});
Runnable
也在主线程上进行调度,那么就会出现递归,可能会导致StackOverflowError或者根本无法放弃主线程以执行其他任务。 - akarnokd