首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摧毁MapView

摧毁MapView
EN

Stack Overflow用户
提问于 2011-02-27 12:51:52
回答 1查看 5.1K关注 0票数 1

我有一个MapActivity,您可以在MapView (Google )和OfflineMapView (我的类,显示以前下载到SD卡上的地图)之间切换。在地图之间切换时,我希望完全销毁并创建地图视图,以便内存中只有一个地图视图。我想要这个有两个原因:

  1. My OfflineMapView占用了大部分可用内存来缓存块。
  2. Google MapView有一些附加线程,我不希望在OfflineMapView可见时运行这些线程。

我试图从布局中删除MapView,并取消对它的引用,但是当我想再次显示它时,我会得到一个异常,说明MapActivity只能有一个MapView。

编辑:谷歌MapView的存在(可见性设置为消失)对OfflineMapView FPS没有任何影响。我也没有得到任何OutOfMemoryErrors。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-28 03:59:49

使用ActivityGroup作为您的Activity类,并让它为每种类型的映射启动和停止子活动。例如,要获取Google的视图:

代码语言:javascript
复制
Intent intent = new Intent(this, GoogleMapActivity.class);
Window window = getLocalActivityManager().startActivity("google-map", intent);
View googleMapView = window.getDecorView();
container.addView(googleMapView);

为了摧毁它:

代码语言:javascript
复制
container.removeView(googleMapView);
getLocalActivityManager().removeAllActivities();

对你的离线地图也这么做。这应该会完全停止MapActivity和线程。

请注意,我发现LocalActivityManager.destroyActivity()是有缺陷的,所以我在示例中使用了LocalActivityManager().removeAllActivities(),因为它确实适用于本例。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5133298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档