应用程序是Android背景后,Mapbox保持GPS锁定

时间:2015-01-26 14:13:53

标签: android gps location mapbox

我想在我们正在构建的应用程序中使用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();
        }

    }
}

1 个答案:

答案 0 :(得分:0)

在生命周期方法onResume / onPause中,您似乎不必禁用MyLocationOverlay。 Mapbox SDK似乎可以为您处理。