From d803c7897d7bffc4645bd49e06fc51666480c890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Wed, 20 Oct 2021 14:36:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E6=97=A5=E5=BF=97=E8=BE=93?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 董宏宇 --- .../mogo/module/adas/AdasEventManager.java | 16 ++++++-------- .../common/drawer/IdentifyDataDrawer.java | 21 +++++++++---------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java index 8c8d8d9b2e..adb193724c 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java @@ -1,7 +1,5 @@ package com.mogo.module.adas; -import android.util.Log; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -238,17 +236,15 @@ public class AdasEventManager implements // 仅在 vr 模式下显示 adas 识别车辆 if (trafficData == null) { Logger.w(TAG, "--->action is null"); + IdentifyDataDrawer.getInstance().clearOldMarker(); } else { - final long start = System.nanoTime(); try { if (FunctionBuildConfig.isDrawIdentifyData) { - ThreadUtils.getSinglePool().execute(new Runnable() { - @Override - public void run() { - IdentifyDataDrawer.getInstance().renderAdasRecognizedResult(trafficData); - } - }); - Log.i(TAG, "接收数据 -> 发出 cost :" + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)) + "ms"); + ThreadUtils.getSinglePool().execute(() -> + IdentifyDataDrawer.getInstance().renderAdasRecognizedResult(trafficData) + ); + } else { + IdentifyDataDrawer.getInstance().clearOldMarker(); } } catch (Exception e) { e.printStackTrace(); diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/IdentifyDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/IdentifyDataDrawer.java index 1c3635a7ed..5202199234 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/IdentifyDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/IdentifyDataDrawer.java @@ -77,7 +77,6 @@ public class IdentifyDataDrawer extends BaseDrawer { return; } - Map newAdasRecognizedMarkersCaches = new ConcurrentHashMap<>(); List newDiffSet = new ArrayList<>(); for (TrafficData recognizedListResult : resultList) { @@ -89,7 +88,7 @@ public class IdentifyDataDrawer extends BaseDrawer { String uniqueKey = recognizedListResult.getUuid(); IMogoMarker marker = mMarkersCaches.remove(uniqueKey); if (marker != null && !marker.isDestroyed()) { -// Log.d(TAG, "发现缓存marker id : " + uniqueKey); + //Log.d(TAG, "发现缓存marker id : " + uniqueKey); updateCacheMarkerRes(marker, recognizedListResult); renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches); } else { @@ -100,7 +99,7 @@ public class IdentifyDataDrawer extends BaseDrawer { removeUselessMarker(mMarkersCaches); removeUselessLastRecord(); int newDiffSetSize = newDiffSet.size(); -// Log.d(TAG, "原数据量 : " + resultList.size() + " 新增marker数量 : " + newDiffSetSize); + Log.d(TAG, "原数据量 : " + resultList.size() + " 新增marker数量 : " + newDiffSetSize); // 复用过期 marker if (newDiffSetSize > 0) { for (int i = 0; i < newDiffSetSize; i++) { @@ -110,7 +109,7 @@ public class IdentifyDataDrawer extends BaseDrawer { if (marker == null) { continue; } -// Log.d(TAG, "新增marker id : " + uniqueKey); + //Log.d(TAG, "新增marker id : " + uniqueKey); renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches); } } @@ -122,6 +121,7 @@ public class IdentifyDataDrawer extends BaseDrawer { /** * todo 后面涉及到此类变化的数据均改动 + * 更新缓存Marker的资源 * * @param marker * @param recognizedListResult @@ -141,7 +141,11 @@ public class IdentifyDataDrawer extends BaseDrawer { } } - private void removeUselessLastRecord() { // todo 最好重新设计一个数据结构,用于多线程数据过期失效的场景,参见redis数据过期 + /** + * // todo 最好重新设计一个数据结构,用于多线程数据过期失效的场景,参见redis数据过期 + * 移除工控机长时间没有下发的数据 + */ + private void removeUselessLastRecord() { if (mLastPositions.isEmpty()) { return; } @@ -184,11 +188,8 @@ public class IdentifyDataDrawer extends BaseDrawer { TrafficData recognizedListResult, Map newAdasRecognizedMarkersCaches) { final long start = System.nanoTime(); -// Log.d(TAG, "renderAdasOneFrame uuid : " + uniqueKey + " type : " + recognizedListResult.type + " heading : " + recognizedListResult.heading); TrafficData lastPosition = mLastPositions.remove(uniqueKey); - mLastPositions.put(uniqueKey, recognizedListResult); -// Log.d(TAG, "使用缓存 id : " + uniqueKey); long interval = 45; if (lastPosition != null) { interval = computeAnimDuration(lastPosition.getSatelliteTime(), recognizedListResult.getSatelliteTime()); @@ -203,11 +204,10 @@ public class IdentifyDataDrawer extends BaseDrawer { marker.setAnchorColor(carColor); newAdasRecognizedMarkersCaches.put(uniqueKey, marker); - Log.d(TAG, "render 刷新一台车 cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start))); } /** - * 绘制 marker + * 创建一个新 marker * * @param recognizedListResult {@link TrafficData} * @return {@link IMogoMarker} @@ -235,7 +235,6 @@ public class IdentifyDataDrawer extends BaseDrawer { .position(new MogoLatLng(recognizedListResult.getLat(), recognizedListResult.getLon())); IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(DataTypes.TYPE_MARKER_ADAS, options); cacheMarkerIconResMd5Val(resIdVal, marker); - Log.d(TAG, "创建一个新 marker cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start))); return marker; }