Android 应用程序作为背景后,Mapbox 保持 GPS 锁定
Mapbox keeps GPS Lock after app is the background on Android
我想在目前正在构建的应用程序中使用 mapbox 运行 很好,但我一直注意到,即使应用程序进入后台,phone 仍然有 GPS锁定。
我在片段和初始化中使用 Mapview 组件
我正在用 GpsLocationProvider
创建一个 UserLocationOverlay
的 mapview 并在其上调用方法 enableMyLocation()
。
所以我假设当片段未显示在屏幕上时,我还必须在 onPause
生命周期方法中调用 myLocationOverlay.disableMyLocation();
。这也应该禁用 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();
}
}
}
看来您不必在生命周期方法中禁用 MyLocationOverlay onResume/onPause。 Mapbox SDK 似乎可以为您处理。
我想在目前正在构建的应用程序中使用 mapbox 运行 很好,但我一直注意到,即使应用程序进入后台,phone 仍然有 GPS锁定。
我在片段和初始化中使用 Mapview 组件
我正在用 GpsLocationProvider
创建一个 UserLocationOverlay
的 mapview 并在其上调用方法 enableMyLocation()
。
所以我假设当片段未显示在屏幕上时,我还必须在 onPause
生命周期方法中调用 myLocationOverlay.disableMyLocation();
。这也应该禁用 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();
}
}
}
看来您不必在生命周期方法中禁用 MyLocationOverlay onResume/onPause。 Mapbox SDK 似乎可以为您处理。