package com.badoo.barf.mvp; import java.util.ArrayList; import java.util.List; import rx.Subscription; import rx.subscriptions.CompositeSubscription; /** * A base class for presenters to provider some utility functionality to manage rx subscriptions. When using this presenter it's important * that the lifecycle methods are called at the relevant times. */ public abstract class BaseRxPresenter implements MvpPresenter { private List<Subscription> mSubscriptions = new ArrayList<>(); /** * Add a subscription to be tracked such that when this presenter is destroyed the subscription will be unsubscribed from. */ public void manage(Subscription subscription) { mSubscriptions.add(subscription); } @Override public void onStart() { } @Override public void onStop() { for (Subscription subscription : mSubscriptions) { subscription.unsubscribe(); } mSubscriptions.clear(); } }