我在我的 Android 应用程序中使用 Google Maps v2。一切正常,但如果我离开应用程序(使用主页按钮),将设备用于其他内容,然后返回我的应用程序,地图只会自行重置并丢弃我的所有设置和侦听器。
我认为这是因为我的手机没有那么多内存,所以当它需要它来运行其他应用程序时,对我的应用程序至关重要的东西会丢失......如果我同时不使用其他应用程序,它会恢复所有设置和听众完好无损。
所以我有一个成员变量private GoogleMap map = null;
我需要以编程方式创建地图,因为我将它放入我还想用于其他片段的LinearLayout
( ) 中。fragment_wrapper
所以我在我的onCreate()
方法中这样做:
mapFragment = MapFragment.newInstance();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.fragment_wrapper, mapFragment);
fragmentTransaction.commit();
地图不会很快初始化,所以我需要在onResume()
方法中设置它的设置和侦听器:
if (map == null) {
map = mapFragment.getMap();
UiSettings settings = map.getUiSettings();
settings.setMyLocationButtonEnabled(false);
settings.setZoomControlsEnabled(false);
(...)
map.setOnMapClickListener((...));
(...)
}
我最初将if块放在那里,这样应用程序就不必在恢复时再次设置地图的设置和侦听器。但后来我注意到它忘记了设置。所以我想如果我删除了if块,它只会再次设置地图,因为onResume()
在应用程序恢复时被调用。但它也不起作用......所以所有地图的设置和监听器都消失了,这使得地图无用,我的应用程序需要重新启动才能再次设置地图。
谁能告诉我问题可能是什么以及如何解决?谢谢你。