我总是习惯使用mapView.getMap()
,直到这个被弃用。从那时起,我试图切换到使用以下内容:
activity.runOnUiThread(
new Runnable() {
@Override
public void run() {
mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
if (googleMap != null) {
相当长一点,似乎做同样的事情。唯一的问题是,这会在删除地图时崩溃我的应用程序。通过调用其中一个父母,多个父母的removeAllViews();
来删除地图。
地图包含在单身中。
public static MapDetailsPane getInstance() {
if (instance == null) {
synchronized (MapDetailsPane.class) {
if (instance == null) {
instance = new MapDetailsPane();
}
}
}
return instance;
}
private MapDetailsPane() {
mapView = new MapView(context);
因此mapView
被重复使用。
崩溃可能会产生两种不同的结果:应用程序只是崩溃并且没有报告,或者设备完全重启。我目前的测试设备运行的是Android 5.0.2,我没有任何其他设备(很容易)可供我测试。
问题的原因是什么?我怎么能解决这个问题呢?由于设备完全重启,到目前为止调试非常困难。
答案 0 :(得分:0)
使用logcat进行(大量)调试之后,我终于找到了问题。 mapview的父母之一将其宽度设置为0.显然,mapview并不喜欢这样,并决定重新启动平板电脑的时间。由于mapview.getMap()
不是异步的,我以前从未遇到过这种情况。