From 8fd6d6ee74e85631946147c7161defd841b1ebfa Mon Sep 17 00:00:00 2001 From: zhongchao Date: Sun, 21 Nov 2021 19:48:32 +0800 Subject: [PATCH] fix bug of handle in trafficlight --- .../core/MogoTrafficLightManager.kt | 23 +++++++++++++++---- .../core/TrafficLightThreadHandler.kt | 1 - 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt index a103af773a..572395d4bf 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/MogoTrafficLightManager.kt @@ -86,17 +86,30 @@ class MogoTrafficLightManager : IMogoCarLocationChangedListener2 { //stop loop traffic light trafficLightNetWorkModel.cancelRequestTrafficLight() //未查到红绿灯,加入2秒延时请求路口ID - mThreadHandler?.sendEmptyMessageDelayed( - MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, - 2_000L - ) + mThreadHandler?.let { handler -> + if (handler.hasMessages(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD)) { + handler.removeMessages(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD) + mThreadHandler?.sendEmptyMessageDelayed( + MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, + 2_000L + ) + } + } }) } }, { //stop loop traffic light trafficLightNetWorkModel.cancelRequestTrafficLight() //刚经过红绿灯,加入3秒延时请求路口ID - mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 3_000L) + mThreadHandler?.let { + if (it.hasMessages(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD)) { + it.removeMessages(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD) + mThreadHandler?.sendEmptyMessageDelayed( + MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, + 3_000L + ) + } + } }) mThreadHandler?.sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD, 5_000L) } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightThreadHandler.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightThreadHandler.kt index 8ceae507b7..afe63fb592 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightThreadHandler.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/core/TrafficLightThreadHandler.kt @@ -38,7 +38,6 @@ class TrafficLightThreadHandler : Handler { when (msg.what) { MSG_WHAT_LOOP_SEARCH_CROSS_ROAD -> { //handler轮询,后续从地图处获取到车道线(前提获取车道线没有异步调用),来优化轮询时长 - Logger.d(TrafficLightConst.MODULE_NAME,"MSG_WHAT_LOOP_SEARCH_CROSS_ROAD") sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD,1_000L) loopSearchCrossRoad?.invoke() }