package com.wealthfront.magellan.rx2; import android.content.Context; import android.view.ViewGroup; import com.wealthfront.magellan.Screen; import com.wealthfront.magellan.ScreenView; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; public abstract class RxScreen<V extends ViewGroup & ScreenView> extends Screen<V> { private CompositeDisposable disposables = new CompositeDisposable(); @Override protected final void onShow(Context context) { disposables = new CompositeDisposable(); onSubscribe(context); } protected void onSubscribe(Context context) {} protected final void autoDispose(Disposable disposable) { disposables.add(disposable); } protected void onDispose(Context context) {} @Override protected final void onHide(Context context) { onDispose(context); disposables.dispose(); } }