我有一个使用动态创建的com.google.android.gms.maps.MapViewmapView = new MapView(DataManager.getInstance().getContext());
该mapView通过addView(mapView)附加到父对象。在我程序的某个地方,我想通过调用parent.removeAllViews();删除此mapView,但是android只是停滞了。该应用程序完全死机,我不知道为什么。我该怎么办才能解决这个问题?

编辑:

我已经使用CustomMapView做了更多的研究:

import android.content.Context;
import android.view.View;

import com.google.android.gms.maps.MapView;

/**
 * @author Daniël van den Berg
 * @date 9/30/2015.
 */
public class CustomMapView extends MapView {
    public CustomMapView(Context context) {
        super(context);
    }

    @Override
    public void onViewRemoved(View child) {
        super.onViewRemoved(child);
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
    }


    public void remove() {
        onPause();
        onDestroy();
    }
}

在尝试删除 View 之前,我先调用remove方法,这就是它的挂起位置。 onPause处的断点确实会触发,但onDestroy处的断点不会触发。创建后,我将其称为onCreate()onResume()。调用onDestroy()而不调用onPause()确实可以,但是removeView(child)再次挂起。因此,显然onPause挂起了我的应用程序。有人对我能做些什么来找出问题所在有任何想法吗?

编辑:
还有另外一个问题,仅当从public void onInfoWindowClick(final Marker marker) {中删除 map 时,才出现此问题。在此函数中,我调用通过runOnUiThread()删除 View 的方法。

最佳答案

好的,这花了我一段时间,但我终于弄明白了。这似乎是错误或没有很好记录的东西。但显然是从调用MapView.onPause()

@Override
    public void onInfoWindowClick(final Marker marker) {

不起作用。这将挂起该应用程序。我通过执行以下操作解决了这个问题:
@Override
public void onInfoWindowClick(final Marker marker) {
    new Handler().postDelayed(
            new Runnable() {
                @Override
                public void run() {
                    MainActivity.getInstance().runOnUiThread(
                            new Runnable() {
                                @Override
                                public void run() {
                                    myMethods();
                                }
                            });
                }
            }, 1);

现在可以正常工作了。我会将其作为错误报告给Google(https://code.google.com/p/gmaps-api-issues/issues/detail?id=8681)。

关于Android使用MapView卡住在ViewGroup.removeAllViews()上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32841381/

10-13 09:03