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 似乎可以为您处理。