Jas*_*ley 14 android google-maps
众所周知,在Android应用中使用Google地图的用户MapActivity每个进程只能使用一个.有一个错误详细讨论了这个问题以及将每个MapActivity放在一个单独的进程中的解决方法.我不想在我的应用程序中出于某些原因这样做,并开发了另一种似乎有用的解决方法.
对于Activity包含地图的每一个,我将它扩展ActivityGroup并创建/销毁MapActivityin onResume/ onPause作为子活动.这样可以确保一次只有一个实例MapActivity(假设您一次只显示一个实例Activity ).以下是我的实现的简化版本:
public class MyMapActivityGroup extends ActivityGroup {
@Override
protected void onResume() {
super.onResume();
addMapView();
}
@Override
protected void onPause() {
super.onPause();
removeMapView();
}
private void addMapView() {
Intent intent = new Intent(this, MyMapActivity.class);
Window window = getLocalActivityManager().startActivity("map", intent);
setContentView(window.getDecorView());
}
private void removeMapView() {
setContentView(new FrameLayout(this));
getLocalActivityManager().removeAllActivities();
}
}
Run Code Online (Sandbox Code Playgroud)
在MapActivity我使用的是没有什么特别的,不需要任何修改.它只是设置一个MapView内容视图.
这对我来说似乎很好.但这样做有什么不利之处吗?我主要担心的是在包含地图的活动之间创建的内存泄漏.
我猜想不这样做的唯一原因是性能。地图活动可能已经有点麻烦了,尤其是在启动它时,因此如果您发现自己频繁分配和取消分配视图,这可能会表现得很差。然而,它实际上取决于创建和删除视图的频率,这完全取决于应用程序的行为方面。
| 归档时间: |
|
| 查看次数: |
2521 次 |
| 最近记录: |