package org.cuieney.videolife.common.base; import org.cuieney.videolife.common.component.RxBus; import rx.Subscription; import rx.functions.Action1; import rx.subscriptions.CompositeSubscription; /** * Created by codeest on 2016/8/2. * 基于Rx的Presenter封装,控制订阅的生命周期 */ public class RxPresenter<T extends BaseView> implements BasePresenter<T> { protected T mView; protected CompositeSubscription mCompositeSubscription; protected void unSubscribe() { if (mCompositeSubscription != null) { mCompositeSubscription.unsubscribe(); } } protected void addSubscrebe(Subscription subscription) { if (mCompositeSubscription == null) { mCompositeSubscription = new CompositeSubscription(); } mCompositeSubscription.add(subscription); } protected <U> void addRxBusSubscribe(Class<U> eventType, Action1<U> act) { if (mCompositeSubscription == null) { mCompositeSubscription = new CompositeSubscription(); } mCompositeSubscription.add(RxBus.getDefault().toDefaultObservable(eventType, act)); } @Override public void attachView(T view) { this.mView = view; } @Override public void detachView() { this.mView = null; unSubscribe(); } }