我正在使用rx-java2来处理android app中的异步作业。
我正在创建Single<Long>
,我使用DisposableSingleObserver
订阅并返回Disposable
,我添加到CompositeDisposable
。
// Instantiate a CompositeDisposable.
Composite mCompositeDisposable = new CompositeDisposable();
// Create a Single<Long>.
Single<Long> mDisposable=
Single
.create(
new SingleOnSubscribe<Long>() {
@Override
public void subscribe(@io.reactivex.annotations.NonNull final SingleEmitter<Long> singleEmitter) throws Exception {
// Do a time consuming job and return a Long.
}
})
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.doFinally(
new Action() {
@Override
public void run() throws Exception {
if(!mCompositeDisposable.isDisposed()){
// Dispose of all Disposables in mCompositeDisposable.
wCompositeDisposable.clear();
}
}
})
// Subscribe and return a Disposable.
.subscribeWith(
new DisposableSingleObserver<Long>() {
// Handle success or error here.
})
// Add Disposable to mCompositeDisposable.
mCompositeDisposable.add(mDisposable);
在单身mCompositeDisposable
中清除mDisposable
(处理方式doFinally()
)是否安全?虽然在运行上面的代码时,一切似乎都按预期工作,但在自己的流中处理某些东西似乎有点危险。