任务串行

This commit is contained in:
liujing
2020-08-05 11:36:24 +08:00
parent 49cc01040b
commit 8fed694aa1
2 changed files with 175 additions and 94 deletions

View File

@@ -78,35 +78,85 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba
private void initData() {
loadingImageView = mRootView.findViewById(R.id.loading_imageview);
v2XAnimationManager.animationWithTarget(loadingImageView, AnimationResources.loadingRes, 100);
getShareEventList(pageNum, 10);
getShareEventDescription();
getShareEventResponse();
}
/*
* 热心指数
* 获取热心指数,分享列表等分享内容
* */
private void getShareEventDescription() {
v2XShareNetworkModel.getShareEventDescription(new V2XRefreshCallback() {
private void getShareEventResponse() {
v2XShareNetworkModel.getShareEventResponse(pageNum, 10, new V2XRefreshCallback() {
@Override
public void onSuccess(Object result) {
ShareEventDescription resultData = (ShareEventDescription) result;
if (result instanceof ShareEventDescription) {
ShareEventDescription resultData = (ShareEventDescription) result;
if (resultData != null && resultData.getResult() != null
&& resultData.getResult().getEnthusiasmIndex() != null) {
dataArrayList.add(resultData.getResult().getEnthusiasmIndex());
Log.d(TAG, "热心指数:" + resultData.getResult().getEnthusiasmIndex());
if (resultData != null && resultData.getResult() != null
&& resultData.getResult().getEnthusiasmIndex() != null) {
dataArrayList.add(resultData.getResult().getEnthusiasmIndex());
Log.d(TAG, "热心指数:" + resultData.getResult().getEnthusiasmIndex());
}
} else if (result instanceof ShareEventItem) {
loadSuccessWithShareEventList(result);
}
countDownLatch.countDown();
}
@Override
public void onFail(String msg) {
countDownLatch.countDown();
loadingError(true);
}
});
}
/*
* 我的分享列表数据处理
* */
private void loadSuccessWithShareEventList(Object result) {
ShareEventItem resultData = (ShareEventItem) result;
ShareEventLoadMoreItem item = new ShareEventLoadMoreItem();
if (resultData != null && resultData.getResult() != null) {
if (resultData.getResult().getPage() != null) {
int total = resultData.getResult().getPage().getTotal();
if (total == 0) {
//空白
item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY);
dataArrayList.add(item);
} else {
if (resultData.getResult().getPage().getContent().size() > 0) {
//当前页有数据
if (dataArrayList.size() > 0) {
Object data = dataArrayList.get(dataArrayList.size() - 1);
if (data instanceof ShareEventLoadMoreItem) {
dataArrayList.remove(dataArrayList.size() - 1);
}
}
dataArrayList.addAll(resultData.getResult().getPage().getContent());
item.setViewType(ShareEventItemEnum.ITEM_TYPE_LOAD_MORE_STATUS);
item.setStatusText("查看更早记录");
} else {
//当前页没有数据
item.setViewType(ShareEventItemEnum.ITEM_TYPE_NO_MORE);
item.setStatusText("没有更多了");
}
if (total > 10) {
dataArrayList.add(item);
}
}
}
Log.d(TAG, "分享列表:" + dataArrayList.get(0));
} else {
//空白
item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY);
dataArrayList.add(item);
}
adapter.notifyDataSetChanged();
v2XAnimationManager.stop();
}
/*
* error界面
* */
private void loadingError(boolean error) {
reloadBUtton = mRootView.findViewById(R.id.loading_error);
if (error) {
@@ -114,7 +164,17 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba
reloadBUtton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getShareEventList(pageNum, 10);
v2XShareNetworkModel.getShareEventList(pageNum, 10, new V2XRefreshCallback() {
@Override
public void onSuccess(Object result) {
loadSuccessWithShareEventList(result);
}
@Override
public void onFail(String msg) {
}
});
reloadBUtton.setVisibility(View.INVISIBLE);
}
});
@@ -124,70 +184,6 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba
v2XAnimationManager.stop();
}
/*
* 分享列表
* */
public void getShareEventList(int page, int size) {
v2XAnimationManager.start();
v2XShareNetworkModel.getShareEventList(page, size, new V2XRefreshCallback() {
@Override
public void onSuccess(Object result) {
ShareEventItem resultData = (ShareEventItem) result;
ShareEventLoadMoreItem item = new ShareEventLoadMoreItem();
try {
if (resultData != null && resultData.getResult() != null) {
if (resultData.getResult().getPage() != null) {
int total = resultData.getResult().getPage().getTotal();
if (total == 0) {
//空白
item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY);
dataArrayList.add(item);
} else {
if (resultData.getResult().getPage().getContent().size() > 0) {
//当前页有数据
if (dataArrayList.size() > 0) {
Object data = dataArrayList.get(dataArrayList.size() - 1);
if (data instanceof ShareEventLoadMoreItem) {
dataArrayList.remove(dataArrayList.size() - 1);
}
}
dataArrayList.addAll(resultData.getResult().getPage().getContent());
item.setViewType(ShareEventItemEnum.ITEM_TYPE_LOAD_MORE_STATUS);
item.setStatusText("查看更早记录");
} else {
//当前页没有数据
item.setViewType(ShareEventItemEnum.ITEM_TYPE_NO_MORE);
item.setStatusText("没有更多了");
}
if (total > 10){
dataArrayList.add(item);
}
}
}
Log.d(TAG, "分享列表:" + dataArrayList.get(0));
} else {
//空白
item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY);
dataArrayList.add(item);
}
adapter.notifyDataSetChanged();
// countDownLatch.countDown();
v2XAnimationManager.stop();
} catch (Exception e) {
Log.d(TAG,"分享列表错误信息",e.fillInStackTrace());
}
}
@Override
public void onFail(String msg) {
// countDownLatch.countDown();
v2XAnimationManager.stop();
loadingError(true);
}
});
}
@NonNull
@Override
@@ -198,6 +194,16 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba
@Override
public void loadMoreShareEventList() {
getShareEventList(pageNum + 1, 10);
v2XShareNetworkModel.getShareEventList(pageNum + 1, 10, new V2XRefreshCallback() {
@Override
public void onSuccess(Object result) {
loadSuccessWithShareEventList(result);
}
@Override
public void onFail(String msg) {
}
});
}
}

View File

@@ -1,11 +1,14 @@
package com.mogo.module.v2x.network;
import android.content.Context;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.commons.network.Utils;
import com.mogo.module.v2x.entity.panel.ShareEventDescription;
import com.mogo.module.v2x.entity.panel.ShareEventItem;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.utils.network.RequestOptions;
@@ -14,12 +17,22 @@ import com.mogo.utils.network.utils.GsonUtil;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
import retrofit2.http.FieldMap;
public class V2XShareNetworkModel {
private final Context mContext;
private V2XApiService mRefreshApiService;
private static final String TAG = "V2XShareNetworkModel";
public V2XShareNetworkModel(Context context) {
this.mContext = context;
@@ -27,31 +40,93 @@ public class V2XShareNetworkModel {
this.mRefreshApiService = network.create(V2XApiService.class, HttpConstant.Companion.getNetHost());
}
public void getShareEventDescription(V2XRefreshCallback callback) {
ShareEventParameter parameter = new ShareEventParameter("E841AB2028LZD00174");
/*
* 两个任务串行
* 1.分享次数,热心指数
* 2.分享列表
* */
public void getShareEventResponse(int page, int size, V2XRefreshCallback callback) {
ShareEventParameter parameter = new ShareEventParameter(Utils.getSn());
Map<String, Object> parameters = new HashMap<>();
parameters.put("data", GsonUtil.jsonFromObject(parameter));
mRefreshApiService.getEnthusiasmIndex(parameters)
.subscribeOn(Schedulers.io())
Observable<String> indexObservable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
try {
//热心指数
mRefreshApiService.getEnthusiasmIndex(parameters)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create((mContext))) {
@Override
public void onSuccess(BaseData resultData) {
super.onSuccess(resultData);
if (callback != null) {
callback.onSuccess(resultData);
}
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
if (callback != null) {
callback.onFail(message);
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
emitter.onNext("1");
emitter.onComplete();
}
});
Observable<String> listObservable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
try {
getShareEventList(page, size, callback);
} catch (Exception e) {
e.printStackTrace();
}
emitter.onNext("2");
emitter.onComplete();
}
});
indexObservable.flatMap(new Function<String, ObservableSource<?>>() {
@Override
public ObservableSource<?> apply(String s) throws Exception {
return listObservable;
}
})
.observeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create((mContext))) {
.subscribe(new Observer<Object>() {
@Override
public void onSuccess(BaseData resultData) {
super.onSuccess(resultData);
if (callback != null) {
callback.onSuccess(resultData);
}
public void onSubscribe(Disposable d) {
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
if (callback != null) {
callback.onFail(message);
}
public void onNext(Object o) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
@@ -59,7 +134,7 @@ public class V2XShareNetworkModel {
* 分享列表
* */
public void getShareEventList(int page, int size, V2XRefreshCallback callback) {
ShareEventParameter parameter = new ShareEventParameter("E841AB2028LZD00174", page, 10);
ShareEventParameter parameter = new ShareEventParameter(Utils.getSn(), page, 10);
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("data", GsonUtil.jsonFromObject(parameter));
mRefreshApiService.getShareEventList(parameters)