我开始实现Jetpack Compose
和好奇:这是一个很好的决定,将GoogleMap
存储在ViewModel
?检查它的内部,我没有发现它包含任何Context
,因此它应该是上下文无关的,可以存储在VM
中。示例代码为:
class MapViewModel() : ViewModel() {
val gMapAsync = MutableLiveData<GoogleMap>()
}
@Composable
fun MapViewContainer(
viewModel: MapViewModel
) {
val map = rememberMapViewWithLifecycle()
AndroidView({ map }) { mapView: MapView ->
mapView.getMapAsync {
viewModel.gMapAsync.value = it
}
}
}
我看到的另一种方法是使用内部变量或其他东西(如回调):
internal val gMapAsync = MutableLiveData<GoogleMap>()
我发现Context
在它的一个子类中,因此将GoogleMap
存储在ViewModel
package com.google.android.libraries.maps.ka;
public class zzba implements zzax, zze, zzbm {
private final Context zzv;