[base_3.4.0-map-sdk]
This commit is contained in:
58
libraries/mogo-map-api/src/main/java/com/mogo/map/MogoMap.kt
Normal file
58
libraries/mogo-map-api/src/main/java/com/mogo/map/MogoMap.kt
Normal 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"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user