Android使用MapView在ViewGroup.removeAllViews()上冻结

Android使用MapView在ViewGroup.removeAllViews()上冻结,第1张

概述我有一个动态创建的com.google.android.gms.maps.MapView,使用mapView = new MapView(DataManager.getInstance().getContext());此mapView通过addView(mapView)附加到父级.在我的程序后面的某个地方,我想通过调用parent.removeAllView

我有一个动态创建的com.Google.android.gms.maps.MapVIEw,使用

mapVIEw = 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();    }}

我在尝试删除视图之前调用了remove方法,这就是它挂起的地方. onPause上的断点确实被触发,但onDestroy上的断点没有触发.它在创建时调用onCreate()和onResume().调用onDestroy()而不调用onPause()确实有效,但removeVIEw(child)再次挂起.显然onPause挂起我的应用程序.有没有人对我能做些什么来弄清楚问题是什么?

编辑:
还有一个补充,这个问题似乎只发生在从公开的voID onInfoWindowClick(最终标记标记){.在这个函数中,我调用通过runOnUiThread()删除视图的方法.最佳答案好吧,这个花了我一段时间,但我终于明白了.它似乎是一个BUG或者没有记录得很好的东西.但显然从中调用了MapVIEw.onPause()

@OverrIDe    public voID onInfoWindowClick(final Marker marker) {

不起作用.这将挂起应用程序.我通过以下方式解决了这个问题:

@OverrIDepublic 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()上冻结全部内容,希望文章能够帮你解决Android使用MapView在ViewGroup.removeAllViews()上冻结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1139224.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存