【问题标题】:RxJava2 Android onNext is called even after disposing compositeDisposable onDestroy即使在处理compositeDisposable onDestroy之后,也会调用RxJava2 Android onNext
【发布时间】:2019-04-17 09:55:00
【问题描述】:

以下是我将 observable 添加到复合一次性用品的代码

compositeDisposable.add(retrofit.create(APIService.class).getHomePageItems(homePageRequestParam.buildPost(), homePageRequestParam.build())
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .onTerminateDetach()
            .subscribeWith(new DisposableObserver<HomePageResult>() {
                @Override
                public void onNext(HomePageResult result) {
                    appView.onHomePageResponse(result);
                }

                @Override
                public void onError(Throwable e) {
                    appView.onHomePageError();
                }

                @Override
                public void onComplete() {
                }
            }));

在 Fragment destroy 时,我正在调用演示者 stop() 方法,如下所示。

 @Override
public void onDestroy() {
    super.onDestroy();
    appPresnter.setView(null);
     appPresnter.onStop();
}

如下所示清除和处理演示者内部的可观察对象

 @Override
public void onStop() {
    compositeDisposable.dispose();
    compositeDisposable.clear();


}

但是即使片段不可用并且我得到空指针异常,仍然会调用 onNext。

 java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

为什么会这样?

【问题讨论】:

  • 尝试将appPresnter.setView(null); appPresnter.onStop(); 移动到onDestroy() 中的超级线上方

标签: android android-fragments observable rx-java2 android-mvp


【解决方案1】:

您在清除CompositeDisposable 之前将view 设置为null,以便在处置前调用onNext():

这个:

appPresnter.setView(null);
appPresnter.onStop();

应转置为:

appPresnter.onStop();
appPresnter.setView(null);

在Fragment::onDestroyView 或Fragment::onStop 而不是Fragment::onDestroy 中进行清理也可能有意义

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2014-06-24
    • 1970-01-01
    • 2017-11-13
    • 2020-06-04
    相关资源
    最近更新 更多