subscription in construction bug fixed
This commit is contained in:
parent
bb857711a6
commit
edb34f2cb2
|
|
@ -32,14 +32,16 @@ public class BaseUiBindable implements UiBindable {
|
|||
|
||||
@NonNull
|
||||
public <T> Observable<T> untilStop(@NonNull final Observable<T> observable) {
|
||||
return observable.observeOn(AndroidSchedulers.mainThread())
|
||||
return isCreatedSubject.first()
|
||||
.switchMap(isCreated -> isCreated ? observable.observeOn(AndroidSchedulers.mainThread()) : Observable.empty())
|
||||
.takeUntil(isStartedSubject.filter(started -> !started));
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public <T> Observable<T> untilDestroy(@NonNull final Observable<T> observable) {
|
||||
return observable.observeOn(AndroidSchedulers.mainThread())
|
||||
return isCreatedSubject.first()
|
||||
.switchMap(isCreated -> isCreated ? observable.observeOn(AndroidSchedulers.mainThread()) : Observable.empty())
|
||||
.takeUntil(isCreatedSubject.filter(created -> !created));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public class ViewController<TActivity extends ViewControllerActivity<?>,
|
|||
@NonNull
|
||||
private final ViewGroup container;
|
||||
@NonNull
|
||||
private final BehaviorSubject<Boolean> isCreatedSubject = BehaviorSubject.create(true);
|
||||
private final BehaviorSubject<Boolean> isCreatedSubject = BehaviorSubject.create();
|
||||
@NonNull
|
||||
private final BehaviorSubject<Boolean> isStartedSubject = BehaviorSubject.create();
|
||||
@NonNull
|
||||
|
|
@ -65,7 +65,7 @@ public class ViewController<TActivity extends ViewControllerActivity<?>,
|
|||
}
|
||||
|
||||
public boolean isDestroyed() {
|
||||
return !isCreatedSubject.getValue();
|
||||
return isCreatedSubject.getValue() != null && !isCreatedSubject.getValue();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -145,6 +145,10 @@ public class ViewController<TActivity extends ViewControllerActivity<?>,
|
|||
return baseUiBindable.untilDestroy(observable);
|
||||
}
|
||||
|
||||
public void onCreate() {
|
||||
isCreatedSubject.onNext(true);
|
||||
}
|
||||
|
||||
public void onStart() {
|
||||
isStartedSubject.onNext(true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,14 @@ public abstract class ViewControllerFragment<TState extends AbstractState, TActi
|
|||
state.onCreate();
|
||||
}
|
||||
viewControllerSubscription = Observable
|
||||
.combineLatest(activitySubject.distinctUntilChanged(), viewSubject.distinctUntilChanged(), this::createViewController)
|
||||
.combineLatest(activitySubject.distinctUntilChanged(), viewSubject.distinctUntilChanged(),
|
||||
(activity, viewInfo) -> {
|
||||
final ViewController newViewController = createViewController(activity, viewInfo);
|
||||
if (newViewController != null) {
|
||||
newViewController.onCreate();
|
||||
}
|
||||
return newViewController;
|
||||
})
|
||||
.subscribe(this::onViewControllerChanged, Lc::assertion);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue