在后台线程上运行standalone Completable

时间:2017-11-20 08:17:25

标签: android multithreading rx-java rx-android android-thread

我正在尝试创建一个可填写的并在后台线程上运行它,但是当我订阅Action

时它没有调用run()的{​​{1}}

基本上我想通过RxAndroid执行以下操作:

Schedulers.io()

使用RxAndroid我正在做以下事情:

     Thread t = new Thread(new Runnable() {
        public void run() {
            doSomething();
        }
    });
    t.start(); 

如果我 Completable.fromAction(new Action() { @Override public void run() throws Exception { doSomething(); } }).subscribeOn(Schedulers.io()); ,则run()方法不会被调用,但如果我执行Schedulers.io()则会调用它。

当我订阅subscribe()时,我无法找到它正在运行的原因。

1 个答案:

答案 0 :(得分:6)

Stream只有在订阅后才会执行。这意味着,您的完成表应按订单run()方式进行订阅。 subscribeOn() 订阅该流,它只是告诉订阅哪个帖子

在您的示例中,只需将subscribe()添加到结尾即可启动run()方法:


    Completable.fromAction(new Action() {
        @Override
        public void run() throws Exception {
            doSomething();
        }
    })
    .subscribeOn(Schedulers.io())
    .subscribe(...);