[base_3.4.0-map-sdk]

This commit is contained in:
zhongchao
2023-08-18 18:42:12 +08:00
parent 10b5933c03
commit fc25630dc4
43 changed files with 644 additions and 790 deletions

View File

@@ -0,0 +1,58 @@
package com.mogo.map
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
import java.util.concurrent.ConcurrentHashMap
class MogoMap private constructor() {
companion object {
private const val TAG = "MogoMap"
const val DEFAULT = "Default"
val mapInstance by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
MogoMap()
}
}
private val mapCache = ConcurrentHashMap<String, IMogoMap>()
/**
* 缓存多实例对象
*/
fun initInstance(map: IMogoMap, instanceTag: String = DEFAULT) {
if (mapCache.contains(instanceTag)) {
CallerLogger.e(
"$M_MAP$TAG",
" already has map instance with tag :$instanceTag , please check"
)
return
}
mapCache[instanceTag] = map
}
/**
* 业务使用时根据地图是否加载来判定 是否获取IMogoMap实例
*/
fun getMogoMap(instance: String = DEFAULT): IMogoMap {
return if (mapCache[instance] == null) {
CallerLogger.e("$M_MAP$TAG", "getMogoMap func has error with no instance in mapCache")
mapCache[DEFAULT]!!
} else {
mapCache[instance]!!
}
}
fun clear(instance: String = DEFAULT) {
if (mapCache.containsKey(instance)) {
mapCache.remove(instance)
} else {
CallerLogger.e(
"$M_MAP$TAG",
"Map instance invoke destroy in clear func has no instance key"
)
}
}
}