package me.weyye.todaynews.base; import me.weyye.todaynews.model.Notice; import me.weyye.todaynews.utils.RxBus; import rx.Observable; import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; import rx.subscriptions.CompositeSubscription; /** * Created by WuXiaolong on 2016/3/30. */ public class BasePresenter<V> implements Presenter<V> { public V mvpView; private CompositeSubscription mCompositeSubscription; @Override public void attachView(V mvpView) { this.mvpView = mvpView; } public BasePresenter(V mvpView) { attachView(mvpView); } @Override public void detachView() { this.mvpView = null; onUnsubscribe(); } //RXjava取消注册,以避免内存泄露 public void onUnsubscribe() { if (mCompositeSubscription != null && mCompositeSubscription.hasSubscriptions()) { mCompositeSubscription.unsubscribe(); } } /** * 发送消息 */ public void post(Notice msg) { RxBus.getDefault().post(msg); } public void addSubscription(Observable observable, Subscriber subscriber) { if (mCompositeSubscription == null) { mCompositeSubscription = new CompositeSubscription(); } mCompositeSubscription.add(observable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber)); } }