diff --git a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java index 5514107..e9f3aae 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java @@ -1301,7 +1301,9 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic /** * 结束采集,对照片归档 * */ + private boolean hasFinishTask = false; // 当前是否包含已完成任务未处理完 private void finishRoadTask(Map finishEntityMap) { + hasFinishTask = true; Observable.fromIterable(finishEntityMap.values()) .subscribeOn(Schedulers.io()).observeOn(Schedulers.computation()) .filter(roadMatchEntity -> roadMatchEntity!=null) @@ -1344,23 +1346,36 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic } }) .observeOn(AndroidSchedulers.mainThread()) + .onErrorResumeNext(new Function>() { + @Override + public ObservableSource apply(Throwable throwable) throws Exception { + return null; + } + }) .subscribe(new Consumer() { @Override public void accept(PoiEntity poiEntity) { - + // 已经处理过该任务,将其从finish列表中移除 + if (poiEntity!=null) { + finishEntityMap.remove(poiEntity.getTaskId()); + } } }, new Consumer() { @Override public void accept(Throwable throwable) { // 此处异常可能是服务返回的数据无法解析,但http正常返回了,因此可能为程序问题,不再重复尝试上报 systemTTS.playText("注意,领取任务失败!"); + XLog.e("完成失败:"+throwable.getMessage()); ToastUtils.Message(AutoTakePictureActivity.this, throwable.getMessage()); + hasFinishTask = false; } }, new Action() { @Override public void run() throws Exception { // 重新绘制网络任务和本地任务 initRoadLine2Map(); + finishEntityMap.clear(); + hasFinishTask = false; } }); } @@ -1666,6 +1681,10 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic @Override public void onBackPressed() { DialogSettings.style = DialogSettings.STYLE.STYLE_IOS; + if (hasFinishTask) { + MessageDialog.show(this, "提示", "后台正在处理已拍摄完成的任务,请稍后再退出当前界面"); + return; + } MessageDialog.show(this, "提示", "退出自动采集模式?", "是", "否").setOnOkButtonClickListener(new OnDialogButtonClickListener() { @Override public boolean onClick(BaseDialog baseDialog, View v) {