From 29faa82d5fb2ba3449d23a8e72be2cf2690854da Mon Sep 17 00:00:00 2001 From: Gavriil Sitnikov Date: Wed, 13 Apr 2016 19:29:41 +0300 Subject: [PATCH] untilDestroy added --- .../navigation/activities/BaseActivity.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java b/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java index 59a212f..775101d 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java @@ -1,6 +1,8 @@ package ru.touchin.roboswag.components.navigation.activities; import android.app.Activity; +import android.os.Bundle; +import android.os.PersistableBundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.View; @@ -21,6 +23,14 @@ public class BaseActivity extends AppCompatActivity { private final ArrayList onBackPressedListeners = new ArrayList<>(); @NonNull private final BehaviorSubject isStartedSubject = BehaviorSubject.create(); + @NonNull + private final BehaviorSubject isCreatedSubject = BehaviorSubject.create(); + + @Override + public void onCreate(final Bundle savedInstanceState, final PersistableBundle persistentState) { + super.onCreate(savedInstanceState, persistentState); + isCreatedSubject.onNext(true); + } @Override protected void onStart() { @@ -34,10 +44,22 @@ public class BaseActivity extends AppCompatActivity { super.onStop(); } + @Override + protected void onDestroy() { + isCreatedSubject.onNext(false); + super.onDestroy(); + } + @NonNull protected Observable untilStop(@NonNull final Observable observable) { return observable.observeOn(AndroidSchedulers.mainThread()) - .takeUntil(isStartedSubject.filter(isStarted -> !isStarted)); + .takeUntil(isStartedSubject.filter(started -> !started)); + } + + @NonNull + protected Observable untilDestroy(@NonNull final Observable observable) { + return observable.observeOn(AndroidSchedulers.mainThread()) + .takeUntil(isCreatedSubject.filter(created -> !created)); } /**