- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
RxJava 中是否有一个 Scheduler api 与 RxAndroid 中的 AndroidSchedulers.mainThread() 同义。因此,如果我在新线程上安排任务并想在 Java 主线程上观察它,我该怎么做?
编辑下面是一个 RxSubscription 示例,带有 system.in 注释,主线程被终止,而 Observable.interval 在单独的线程上运行。在 Android 中,我可以说 observeOn(AndroidSchedulers.MainThread) 之后的任何操作都将在主线程上运行。我正在 Java 中寻找类似的调度程序,因为 AndroidSchedulers 是 RxAndroid 的一部分。
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import rx.Observable;
public class Main {
public static void main(String[] args) throws InterruptedException, IOException {
Observable<Long> values = Observable.interval(1000, TimeUnit.MILLISECONDS);
values.subscribe(
v -> System.out.println("Received: " + v),
e -> System.out.println("Error: " + e),
() -> System.out.println("Completed")
);
//System.in.read();
}
}
最佳答案
返回到“主”Java 线程目前是不可能的,因为 RxJava 1.x 没有阻塞调度器。
如果你可以升级到 RxJava 2.x,我有一个特殊的调度器可以“固定”到当前线程:
compile "com.github.akarnokd:rxjava2-extensions:0.15.1"
BlockingScheduler
This type of scheduler runs its execution loop on the "current thread", more specifically, the thread which invoked its execute() method. The method blocks until the shutdown() is invoked. This type of scheduler allows returning to the "main" thread from other threads.
public static void main(String[] args) {
BlockingScheduler scheduler = new BlockingScheduler();
scheduler.execute(() -> {
Flowable.range(1, 10)
.subscribeOn(Schedulers.io())
.observeOn(scheduler)
.doAfterTerminate(() -> scheduler.shutdown())
.subscribe(v -> System.out.println(v + " on " + Thread.currentThread()));
});
System.out.println("BlockingScheduler finished");
}
关于android - RxJava 中 AndroidSchedulers.mainThread() 的替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42145437/
我使用的是 2.0.0 版的 RxJava,但我似乎无法访问 AndroidScheduler。我无法通过 RxJava 访问主线程 最佳答案 AndroidSchedulers 类是 RxAndro
好的,我们实现了一个 MVP 层,很好地展示并使用 RxJava 和 RxAndroid。我们拍了this作为例子并以此为基础。 当 Presenter 被调用开始执行时,它会向 Model Inte
RxJava 中是否有一个 Scheduler api 与 RxAndroid 中的 AndroidSchedulers.mainThread() 同义。因此,如果我在新线程上安排任务并想在 Java
我在我的应用程序中同时使用了 rxjava/rxandroid 和 jackson-databind,但似乎这两个库无法协同工作。当我尝试运行我的应用程序时,它返回以下错误: java.lang.Cl
我在测试方法 shouldFetchMachineSettings() 中收到了一个 NullPointerException。通过调试,我意识到控件没有转到可观察对象的成功回调,也没有启动 Inte
我使用 SwipeRefreshLayout 来处理拉动刷新并使用 Retrofit 返回 Observable 来获取我的数据,但是 Observable.subscribeOn(AndroidSc
我的代码是这样的: .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread()) .s
我的 oncreate 中有一个 Observable,我想在我的主线程上获取结果。但是由于 AndroidScheduler.mainThread 只与 Java Observable 一起工作,我
我写了一个订阅者,当谷歌地图的 OnCameraChangeListener 被触发时,它会被触发。 Observable.create(new Observable.OnSubscribe()
我正在编写一个简单的测试,相当于: Test fun testObservable() { val returnedObservable = Observable.create(object
我是一名优秀的程序员,十分优秀!