GoogleMap
正在使用协同例程的实例。映射片段被正确地显示,直到我对映射引用调用任何方法,然后映射挂起并停止响应。
这是我的代表:
class MapInitializer(private val setUp: GoogleMap.() -> Unit) : ReadOnlyProperty<AppCompatActivity, GoogleMap> {
var instance: GoogleMap? = null
override fun getValue(thisRef: AppCompatActivity, property: KProperty<*>): GoogleMap {
return instance ?: thisRef.loadMap().apply(setUp).also { instance = it }
}
private fun AppCompatActivity.loadMap(): GoogleMap = runBlocking {
async { registerCallback() }.await()
}
private suspend fun AppCompatActivity.registerCallback(): GoogleMap = suspendCoroutine { continuation ->
(supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment).getMapAsync {
continuation.resume(
it
)
}
}
}
我想映射线程正在挂起,但我不知道为什么。请帮忙。