我使用乾淨的架構來處理android項目。 我有以下類:爲什麼配置DisposableObserver在這種情況下很重要
public abstract class RxBaseInteractor<T, Params> {
private final CompositeDisposable disposables;
public RxBaseInteractor() {
this.disposables = new CompositeDisposable();
}
abstract public Observable<T> buildUseCaseObservable(Params params);
public void execute(DisposableObserver<T> observer, Params params) {
Preconditions.checkNotNull(observer);
final Observable<T> observable = this.buildUseCaseObservable(params)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
addDisposable(observable.subscribeWith(observer));
}
public void dispose() {
if (!disposables.isDisposed()) {
disposables.dispose();
}
}
protected void addDisposable(Disposable disposable) {
Preconditions.checkNotNull(disposable);
Preconditions.checkNotNull(disposables);
disposables.add(disposable);
}
}
所以執行(..)採取DisposableObserver再有就是被稱爲處理此而觀察到的Dispose()方法。
對我而言,observable可能來自WebApi,使用Realm進行改造或緩存。
現在在演示者的onDestroy()中,i稱爲interactor.dispose()之類:
@Override public void destroy() {
super.destroy();
myInteractor.dispose();
}
其之後,從該視圖稱爲:
@Override public void onDestroy() {
super.onDestroy();
if (getPresenter() != null) {
getPresenter().destroy();
}
}
我充分理解體系結構同時我也理解處理未管理的網絡或數據庫資源,但我需要完全理解,在這種情況下,處置observable真的很重要,因爲我認爲Retrofit或Realm會自動管理關閉連接並處理資源。
我認爲這是不相關的處置領域或改造的資源,但它可以退訂可觀測它的自我,因爲我查了資料有關係,我發現:
類DisposableObserver:一個抽象的觀察員,允許異步取消通過 執行一次性。所有預執行的最終方法是線程安全的 。
使用public dispose()方法處理下一個實現中的 內的序列。
但我仍然不明白使用它的好處。是否在銷燬視圖時取消訂閱observable,以便從onNext()到onComplete()並關閉發射器上的訂閱?