getMapAsync崩溃了设备

时间:2016-01-25 15:52:22

标签: android google-maps-android-api-2

我总是习惯使用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,我没有任何其他设备(很容易)可供我测试。

问题的原因是什么?我怎么能解决这个问题呢?由于设备完全重启,到目前为止调试非常困难。

1 个答案:

答案 0 :(得分:0)

使用logcat进行(大量)调试之后,我终于找到了问题。 mapview的父母之一将其宽度设置为0.显然,mapview并不喜欢这样,并决定重新启动平板电脑的时间。由于mapview.getMap()不是异步的,我以前从未遇到过这种情况。