我有一个MapActivity,您可以在MapView (Google )和OfflineMapView (我的类,显示以前下载到SD卡上的地图)之间切换。在地图之间切换时,我希望完全销毁并创建地图视图,以便内存中只有一个地图视图。我想要这个有两个原因:
我试图从布局中删除MapView,并取消对它的引用,但是当我想再次显示它时,我会得到一个异常,说明MapActivity只能有一个MapView。
编辑:谷歌MapView的存在(可见性设置为消失)对OfflineMapView FPS没有任何影响。我也没有得到任何OutOfMemoryErrors。
发布于 2011-02-28 03:59:49
使用ActivityGroup作为您的Activity类,并让它为每种类型的映射启动和停止子活动。例如,要获取Google的视图:
Intent intent = new Intent(this, GoogleMapActivity.class);
Window window = getLocalActivityManager().startActivity("google-map", intent);
View googleMapView = window.getDecorView();
container.addView(googleMapView);为了摧毁它:
container.removeView(googleMapView);
getLocalActivityManager().removeAllActivities();对你的离线地图也这么做。这应该会完全停止MapActivity和线程。
请注意,我发现LocalActivityManager.destroyActivity()是有缺陷的,所以我在示例中使用了LocalActivityManager().removeAllActivities(),因为它确实适用于本例。
https://stackoverflow.com/questions/5133298
复制相似问题