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