项目的MultipleMVPActivity,SingMVPActivity是绑定式的mvp,一个activity可以绑定多个P和V,这样可以模块化P 这框架是为了改公司项目成MVP写的,后面一些原因放弃了,所以可能mvp那部分不太理想,得空改改 但是很适合mvc用,哈哈哈哈
ObservableBuilder.
newObservableBuilder(ApiUtil.getApiService().request(Url.url))
.delay(1000)//延时请求
.retryWhen(3)//重试次数
.time(new TimeCallback() {//重试延迟的时间,默认次数*1000
@Override
public long timeBack(int currCount) {
return currCount*1000;
}
})
.getCache(new GetCacheCallback() {
@Override
public ParaseData returnCache() {
MyLog.rtLog(TAG, "取缓存");
ParaseData data = new ParaseData<>();
data.data = getCacheData();
return data;
}
})
.putCache(new PutCacheCallback() {
@Override
public void putCache(ParaseData data) {
MyLog.rtLog(TAG, "存缓存:" + data);
}
})
.equalsCallback(new EqualsCallback() {//如果使用了缓存,那么对比缓存和网络数据,默认对比result字符串
@Override
public boolean equalsData(ParaseData data) {
return true;
}
})
.action(new Action() {
@Override
public ParaseData action(ParaseData data) {
if(!data.cache) {
//修改网络数据,纯粹为了查看log
PublicBean bean = new PublicBean();
bean.setErrorMsg("网络数据");
data.data = bean;
data.result = "网络数据";
}
return data;
}
})
.submit(new ObjectObserver(this,
new ObjectObserver.Builder()
.setShowLoading(false)//是否显示加载框
.setMvpView(new HandleCallback(this) {
@Override
public void showLoading() {
super.showLoading();
}
@Override
public void hindeLoading() {
super.hindeLoading();
}
})//默认使用HandleCallback,统一的加载可以写在里面,也可以对应请求重写
) {
@Override
public void onSuccess(PublicBean data) {
MyLog.rtLog(TAG, "获取数据:" + data + "\n是否缓存:" + getCurrParaseData().cache);
}
@Override
public boolean isPutCache(ParaseData data) {
//这里可以做一些处理判断是否存缓存
return super.isPutCache(data);
}
@Override
protected ObservableTransformer, ParaseData> putDataThreadCompose() {
//修改存缓存执行的线程
return super.putDataThreadCompose();
}
});
-----------------------输出---------------------------
取缓存
获取数据:PublicBean{errorCode=0, errorMsg='缓存数据', data=null} 是否缓存:true
获取数据:PublicBean{errorCode=0, errorMsg='网络数据', data=null} 是否缓存:false
存缓存:ParaseData{data=PublicBean{errorCode=0, errorMsg='网络数据', data=null}, result='网络数据', cache=false, mThrowable=null}