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();
}
}