修复弹出监控Dialog没有被销毁的bug

Signed-off-by: 董宏宇 <martindhy@gmail.com>
This commit is contained in:
董宏宇
2021-10-20 16:41:17 +08:00
parent a8d8e19f67
commit 0e90cee85d
6 changed files with 90 additions and 208 deletions

View File

@@ -3,8 +3,6 @@ package com.mogo.service.impl.adas;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
@@ -33,7 +31,6 @@ import com.mogo.service.adas.IMogoAdasWarnMessageCallback;
import com.mogo.service.impl.singleton.SingletonsHolder;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import com.zhidao.adasconfig.api.AdasConfigApiController;
@@ -109,38 +106,6 @@ public class MogoADASController implements IMogoADASController {
private final List<IMogoAdasOCHCallback> mAdasOCHCallback = new CopyOnWriteArrayList<>();
/**
* 接收 adas 定位数据线程
*/
private final Handler mAdasLocationRecHandler = new Handler(WorkThreadHandler.newInstance("AdasLocationRecThread").getLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
final long start = System.currentTimeMillis();
AutopilotCarStateInfo stateInfo = GsonUtil.objectFromJson(((String) msg.obj), AutopilotCarStateInfo.class);
if (stateInfo == null || stateInfo.getValues() == null) {
// Logger.d(TAG, "ADAS-LOC-timer", "upd 到 aidl 传输数据 stateInfo or stateInfo.getValues() is null");
return;
}
// if (stateInfo.getValues().getStartReceiverDataTime() != null) {
// Logger.d("ADAS-LOC-timer", "upd 到 aidl 传输耗时:%s", start - Long.valueOf(stateInfo.getValues().getStartReceiverDataTime()));
// } else {
// Logger.d("ADAS-LOC-timer", "upd 到 aidl 传输耗时时间字段 startReceiverDataTime is null");
// }
mLastLon = stateInfo.getValues().getLon();
mLastLat = stateInfo.getValues().getLat();
mSpeed = stateInfo.getValues().getGnss_speed();
satelliteTime = stateInfo.getValues().getSatelliteTime();
if (mMogoAdasCarDataCallback != null) {
mMogoAdasCarDataCallback.onAdasCarDataCallback(stateInfo);
}
// Logger.i("ADAS-LOC-timer", "cost " + (System.currentTimeMillis() - start) + "ms");
}
};
@Override
public void openADAS() {
showADAS();
@@ -155,7 +120,6 @@ public class MogoADASController implements IMogoADASController {
}
}
@Override
public void showADAS() {
Logger.d(TAG, "showADAS()");
@@ -246,15 +210,23 @@ public class MogoADASController implements IMogoADASController {
@Override
public void ownerCarStateInfo(String ownerCarStateInfo) {
Message message = mAdasLocationRecHandler.obtainMessage();
message.obj = ownerCarStateInfo;
message.sendToTarget();
// 接收 adas 定位数据线程
AutopilotCarStateInfo stateInfo = GsonUtil.objectFromJson(ownerCarStateInfo, AutopilotCarStateInfo.class);
if (stateInfo == null || stateInfo.getValues() == null) {
return;
}
mLastLon = stateInfo.getValues().getLon();
mLastLat = stateInfo.getValues().getLat();
mSpeed = stateInfo.getValues().getGnss_speed();
satelliteTime = stateInfo.getValues().getSatelliteTime();
if (mMogoAdasCarDataCallback != null) {
mMogoAdasCarDataCallback.onAdasCarDataCallback(stateInfo);
}
}
@Override
public void notifyAutopilotState(AutopilotStatusInfo autopilotStatus) {
DebugConfig.setAutoPilotStatus(autopilotStatus.getState() + "");
if (!mAdasOCHCallback.isEmpty()) {
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onStateChanged(autopilotStatus.getState(), autopilotStatus.getReason());