diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt index 6d82e9399e..c2f683500e 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt @@ -2,7 +2,7 @@ package com.mogo.eagle.function.biz.v2x.trafficlight.core import android.content.Context import android.os.Handler -import android.os.Looper +import android.os.HandlerThread import com.mogo.eagle.core.data.biz.trafficlight.RoadIDResult import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightControl import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult @@ -13,7 +13,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X import com.mogo.eagle.function.biz.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_LOOP_SEARCH_CROSS_ROAD import com.mogo.eagle.function.biz.v2x.trafficlight.core.TrafficLightThreadHandler.Companion.MSG_WHAT_LOOP_SEARCH_TRAFFIC_LIGHT @@ -36,20 +35,24 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener { private val trafficLightNetWorkModel = TrafficLightNetWorkModel() @Volatile private var mLocation: MogoLocation? = null + @Volatile private var roadIDResult: RoadIDResult? = null + @Volatile private var trafficLightResult: TrafficLightResult? = null private var inRange: Boolean = false + @Volatile private var firstLoopCrossRoad: Boolean = true //开启循环请求路口 private var mThreadHandler: Handler? = null - //todo 优化looper,需要考虑回调数据线程同步 fun initServer(context: Context) { mContext = context CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this) + val thread = HandlerThread("v2x_traffic_light") + thread.start() mThreadHandler = - TrafficLightThreadHandler(Looper.getMainLooper(), { + TrafficLightThreadHandler(thread.looper, { //第一次查询路口时,如果红绿灯显示,则隐藏掉 if (firstLoopCrossRoad) { CallerTrafficLightListenerManager.resetTrafficLightStatus() diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/TrafficLightThreadHandler.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/TrafficLightThreadHandler.kt index 2c5ce146dd..9b04876206 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/TrafficLightThreadHandler.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/TrafficLightThreadHandler.kt @@ -36,7 +36,7 @@ class TrafficLightThreadHandler : Handler { when (msg.what) { MSG_WHAT_LOOP_SEARCH_CROSS_ROAD -> { //handler轮询,后续从地图处获取到车道线(前提获取车道线没有异步调用),来优化轮询时长 - sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD,300L) + sendEmptyMessageDelayed(MSG_WHAT_LOOP_SEARCH_CROSS_ROAD,500L) loopSearchCrossRoad?.invoke() } MSG_WHAT_STOP_SEARCH_CROSS_ROAD -> {