我想在我们正在构建的应用程序中使用mapbox它运行良好,但我一直注意到即使应用程序已经移至后台,手机仍然具有GPS锁定。
我在片段和初始化中使用Mapview组件
mapview我正在使用UserLocationOverlay
创建GpsLocationProvider
,我在其上调用方法enableMyLocation()
。
所以我假设我还必须在myLocationOverlay.disableMyLocation();
生命周期方法中调用onPause
,以便在屏幕上不显示片段。这也应该禁用GPS锁。
当我离开应用程序或将其移至后台时,GPS修复图标仍保留在状态栏中并保持在那里,直到从最近的应用程序切换器中杀死应用程序。
我该如何解决这个问题。下面是一些初始化代码和onResume,onPause方法
private void initMap() {
mMapView.setDiskCacheEnabled(true);
mMapView.setCenter(mLatLng);
mMapView.setZoom(ZOOM_LEVEL);
// Adds an icon that shows location
myLocationOverlay = new UserLocationOverlay(new GpsLocationProvider(getActivity()), mMapView);
myLocationOverlay.enableMyLocation();
mMapView.addOverlay(myLocationOverlay);
List<Marker> markers = new ArrayList<>(mPoints.size());
for (Point point : mPoints) {
// create some markers and add them to the map.
}
mMapView.addItemizedOverlay(new ItemizedIconOverlay(getActivity(), markers, new ItemizedIconOverlay.OnItemGestureListener<Marker>() {
@Override
public boolean onItemSingleTapUp(int position, Marker marker) {
// set some click logic
return true;
}
@Override
public boolean onItemLongPress(int i, Marker marker) {
return false;
}
}));
}
@Override
public void onResume() {
super.onResume();
if (myLocationOverlay != null && !myLocationOverlay.isMyLocationEnabled()) {
myLocationOverlay.enableMyLocation();
}
}
@Override
public void onPause() {
super.onPause();
if (myLocationOverlay != null) {
if (myLocationOverlay.isMyLocationEnabled()) {
myLocationOverlay.disableMyLocation();
}
}
}
答案 0 :(得分:0)
在生命周期方法onResume / onPause中,您似乎不必禁用MyLocationOverlay。 Mapbox SDK似乎可以为您处理。