From 89a16efdd419389faec0496058be62742a6af090 Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 17 Jul 2024 15:09:54 +0800 Subject: [PATCH] =?UTF-8?q?[6.5.0][=E9=81=93=E8=B7=AF=E4=BA=8B=E4=BB=B6][?= =?UTF-8?q?=E8=A7=86=E8=A7=92=E5=88=87=E6=8D=A2]=20=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BC=98=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/map/MapDataWrapper.kt | 50 +++++++++++++++---- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MapDataWrapper.kt b/libraries/mogo-map/src/main/java/com/mogo/map/MapDataWrapper.kt index 0c285172c5..483e067f20 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MapDataWrapper.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MapDataWrapper.kt @@ -1,5 +1,6 @@ package com.mogo.map +import android.os.Looper import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.Logger @@ -23,6 +24,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener import com.zhidaoauto.map.sdk.open.data.CityInfo import com.zhidaoauto.map.sdk.open.data.MapDataApi import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit.SECONDS import java.util.concurrent.atomic.AtomicReference /** @@ -258,20 +260,33 @@ object MapDataWrapper : IMogoData { lat: Double, angle: Float ): com.mogo.map.entities.RoadInfo { + if (Looper.getMainLooper() == Looper.myLooper()) { + throw AssertionError() + } val latch = CountDownLatch(1) var tempCode: Int = Int.MIN_VALUE var tempData: RoadNameInfo? = null Logger.d(TAG, "getRoadInfo --- 1 ---") MapDataApi.getRoadName(lon, lat, angle, object : IResult { override fun result(code: Int, result: RoadNameInfo?) { - Logger.d(TAG, "getRoadInfo ==> code: $code, result: $result") - tempCode = code - tempData = result - latch.countDown() + try { + Logger.d(TAG, "getRoadInfo ==> code: $code, result: $result") + tempCode = code + tempData = result + } finally { + latch.countDown() + } } }) - latch.await() - Logger.d(TAG, "getRoadInfo --- 2 ---: code -> $tempCode, data -> $tempData") + try { + if (latch.await(5, SECONDS)) { + Logger.d(TAG, "getRoadInfo --- 2 ---: code -> $tempCode, data -> $tempData") + } else { + Logger.d(TAG, "getRoadInfo --- 3 ---: code -> $tempCode, data -> $tempData") + } + } catch (e: InterruptedException) { + e.printStackTrace() + } return com.mogo.map.entities.RoadInfo( tempCode, tempData?.tile_id?.toLong() ?: 0L, @@ -308,16 +323,33 @@ object MapDataWrapper : IMogoData { } override fun getCrossRoad(lon: Double, lat: Double, angle: Double): CrossRoad? { + if (Looper.getMainLooper() == Looper.myLooper()) { + throw AssertionError() + } val latch = CountDownLatch(1) + Logger.d(TAG, "getCrossRoad --- 1 ---") val temp = AtomicReference() MapDataApi.getCrossRoad(lon, lat, angle.toFloat(), object : IResult { override fun result(code: Int, result: RoadCross?) { - temp.set(CrossRoad(result?.status ?: 0, result?.tile_id ?: "", result?.cross_id ?: "", result?.tile_id_end ?: "", result?.cross_id_end ?: "")) - latch.countDown() + try { + Logger.d(TAG, "getCrossRoad --- 1 - 1 ---") + temp.set(CrossRoad(result?.status ?: 0, result?.tile_id ?: "", result?.cross_id ?: "", result?.tile_id_end ?: "", result?.cross_id_end ?: "")) + } finally { + latch.countDown() + } } }) - latch.await() + try { + Logger.d(TAG, "getCrossRoad --- 2 ---") + if (latch.await(5, SECONDS)) { + Logger.d(TAG, "getCrossRoad --- 3 ---") + } else { + Logger.d(TAG, "getCrossRoad --- 4 ---") + } + } catch (e: InterruptedException) { + e.printStackTrace() + } return temp.get() } } \ No newline at end of file