【发布时间】:2017-10-10 18:02:01
【问题描述】:
我正在尝试学习 RxJava2,并将我的 AsyncTasks 转换为 Observables。
我正在尝试转换以下代码。
if(asyncTask.getStatus() == AsyncTask.Status.RUNNING){
asyncTask.cancel();
}
asyncTask = new CustomTask();
asyncTask.execute(input);
我尝试使用 Disposables 重新创建以下内容。
Disposable currentTask;
PublishSubject input = PublishSubject.create();
对于每个输入
if(currentTask != null) currentTask.dispose();
currentTask = input
.map(// Network calls
// returns CustomObject)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> {
// do work with result
}, throwable -> Log.e(TAG, throwable.toString()));
但是,currentTask 始终为 null。为什么?这是错误的做法吗??
【问题讨论】:
-
并非所有
subscribe(...)方法都返回Disposable。你能至少暗示你传递给subscribe(...)的参数吗? -
您是否试图随时取消
currentTask?另外,您可以添加使用PublishSubject input的任何其他地方吗?我怀疑您可能滥用了该主题,这导致了您的问题。
标签: android rx-java observable rx-java2 publishsubject