在后台运行void方法

Mar*_*ert 16 rx-java rx-java2

我想使用rxjava在后台运行一个方法.我不关心结果.

void myHeavyMethod() { (...) }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我唯一的解决方案是将返回类型修改为例如boolean.

boolean myHeavyMethod() { (...) return true; }
Run Code Online (Sandbox Code Playgroud)

然后我跑:

Completable.defer(() -> Completable.fromCallable(this::myHeavyMethod))
        .subscribeOn(Schedulers.computation())
        .subscribe(
                () -> {},
                throwable -> Log.e(TAG, throwable.getMessage(), throwable)
        );
Run Code Online (Sandbox Code Playgroud)

有没有办法保持void返回类型?

tyn*_*ynn 37

这个fromAction()方法就是你要找的.

Completable.fromAction(this::myHeavyMethod)
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记调用`.subscribe()` (3认同)