깨끗한 아키텍처로 안드로이드 프로젝트를 작업하고 있습니다.이 경우 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을하고이 관찰을 처리하기 위해 호출하는 처분() 방법이있다 : 나는 아래의 클래스가 있습니다.
내 경우에는 관측 영역이 영역을 사용하는 개장 또는 캐시를 사용하여 WebApi에서 올 수 있습니다.
@Override public void onDestroy() {
super.onDestroy();
if (getPresenter() != null) {
getPresenter().destroy();
}
}
내가 완전히 구조를 이해 : 뷰에서 그 후라고
@Override public void destroy() {
super.destroy();
myInteractor.dispose();
}
:
지금 발표자들의 OnDestroy()에서, 나는 같은 interactor.dispose을()가 호출 또한 관리되지 않는 네트워크 또는 데이터베이스 리소스를 처리하는 이해하지만이 경우에는 관찰 할 수있는 실제 처분의 경우 완전히 개혁 또는 영역 자동 연결을 닫고 리소스를 처분 관리 생각하는 경우 완전히 이해해야합니다.
클래스 DisposableObserver :
나는이 영역 또는 갱신 할 자원을 폐기 관련은 아니지만이 내가 설명서를 확인으로 관찰 그 자체에 취소 관련 될 수 있으며 내가 찾은 것 같아요 수 있습니다 추상 관찰자 일회용을 구현하는 비동기 취소 . 사전 구현 된 모든 최종 메서드는 스레드 안전성이 입니다.
public 구현 인 dispose() 메서드를 사용하여onNext 구현 내에서 시퀀스를 처리합니다.
하지만 여전히 사용의 이점을 이해하지 못합니다. 관찰을 취소하면 뷰가 파손될 때 onNext()에서 onComplete()로 이동하고 이미 터의 구독을 닫을 수 있습니까?