[3.4.0] change the traffic light in thread handler

This commit is contained in:
zhongchao
2023-07-25 19:28:29 +08:00
parent 7c566a2334
commit 8f52e011a9
2 changed files with 8 additions and 5 deletions

View File

@@ -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()

View File

@@ -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 -> {