【发布时间】:2020-08-05 14:36:02
【问题描述】:
我使用 CompositeDisposable 来观察网络调用。 可观察对象位于使用我的活动上下文的类中,因此即使在 onDestroy() 中调用 clear() 之后,可观察对象仍会继续运行,并且其类包含对我的活动的引用,从而导致内存泄漏。 有什么方法可以真正停止这个过程,而不是停止观察它?
具有 Observable 的类
public ProgressObservable(Context context) {
super(context);
createProgressObservable();
}
private void createProgressObservable() {
progressObservable = authenticationObservable
.flatMap((Function<Object, Observable<ProgressResponse>>)
Response -> Observable.fromCallable(() -> {
...
...
return pResponse;
})).cache();
}
在我的Activity中创建observable
Observable<ProgressResponse> prObservable = new ProgressObservable(context).getProgressObservable();
disposable.add(prObservable
.subscribe(progress -> mListener.onSilentRefreshComplete(),
error -> {
}));
@Override
public void onDestroy() {
super.onDestroy();
if (isFinishing()) {
disposables.clear();
}
}
【问题讨论】:
-
你试过用“dispose”代替“clear”吗?
-
@SaeedLotfi 没有区别。