diff --git a/app/src/main/java/org/schabi/newpipe/fragments/BaseStateFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/BaseStateFragment.java index 37e4ce465..a9007052f 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/BaseStateFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/BaseStateFragment.java @@ -35,6 +35,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import icepick.State; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; import static org.schabi.newpipe.util.AnimationUtils.animateView; @@ -48,6 +49,8 @@ public abstract class BaseStateFragment extends BaseFragment implements ViewC @Nullable private ProgressBar loadingProgressBar; + private Disposable errorDisposable; + protected View errorPanelRoot; private Button errorButtonRetry; private TextView errorTextView; @@ -64,6 +67,14 @@ public abstract class BaseStateFragment extends BaseFragment implements ViewC wasLoading.set(isLoading.get()); } + @Override + public void onDestroy() { + super.onDestroy(); + if (errorDisposable != null) { + errorDisposable.dispose(); + } + } + /*////////////////////////////////////////////////////////////////////////// // Init //////////////////////////////////////////////////////////////////////////*/ @@ -83,7 +94,7 @@ public abstract class BaseStateFragment extends BaseFragment implements ViewC @Override protected void initListeners() { super.initListeners(); - RxView.clicks(errorButtonRetry) + errorDisposable = RxView.clicks(errorButtonRetry) .debounce(300, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(o -> onRetryButtonClicked());