2017-04-18 94 views
8

我想使用rxjava在後臺運行一個方法。我不關心結果。RxJava2在後臺運行void方法

void myHeavyMethod() { (...) } 

到目前爲止,我唯一的解決方案是將返回類型修改爲例如boolean

boolean myHeavyMethod() { (...) return true; } 

後來我跑:

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

有沒有辦法做到這一點保持void返回類型?

回答

17

fromAction()方法就是你要找的。

Completable.fromAction(this::myHeavyMethod) 
+0

我收到一條錯誤「此語言級別不支持方法引用」 – RunLoop

+0

方法引用是Java 8功能。所以你可能使用Java 7,因此你必須自己實現'Action'接口。 – tynn