https://github.com/trello/RxLifecycle
看完rxLifeCycle 你会发现 好方便啊~但是在MVP中 尤其是P中没有bindToLifeCycle啊 怎么破?
解决方案:
搞一个接口实现
public interface IParaView extends IBase {
void updateData();
<T> Observable.Transformer<T, T> bindToLifecycle();
}
然后像这样调就行了
void bindDatas_rx() {
bindDataObservable.subscribeOn(Schedulers.io()).doOnSubscribe(new Action0() {
@Override
public void call() {
pDialog.show();
pDialog.setCancelable(false);
}
}).compose(getView().bindToLifecycle()).subscribeOn(AndroidSchedulers.mainThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
Log.i(TAG, "onCompleted: ");
getView().updateData();
pDialog.dismiss();
com.orhanobut.logger.Logger.t(TAG).d("ConfigParaList size%s", mDatas.size());
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError: " + e.toString());
}
@Override
public void onNext(String s) {
Log.i(TAG, "onNext: state:" + s);
}
});
}
我的继承关系是这样的:
public class SetupAlgorithmparameterFragment extends BaseFragment<IParaView, SetupAlgorithmparaPresenter>
implements LoadMoreAdapter.OnLoadMoreListener, IParaView {
中文-使用详解
也就是说这个bind在RxFrament中,我的Presenter访问不到,只要通过接口回调,而RxFragment实现了这个接口,自然就调用的RxFragment中的Bind方法啦!
我也测试了一下,的确如此。