android - 为什么即使我在 android 中删除了融合位置 api 的位置更新,GPS 仍在使用中

标签 android gps

我在我的应用程序中使用 Fused Location Api 进行位置更新。当我请求位置更新时,GPS 开启(我们可以在状态栏中看到位置符号),当我通过调用 removeLocationUpdates 删除位置更新时,有时 GPS 不会关闭(我们可以在状态栏中看到静止位置符号)。除了我的应用程序,此时没有其他应用程序使用 GPS。 这会导致应用消耗更多电量。

创建所需的对象实例

  mLocationClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(connectCallbackListener)
                .addOnConnectionFailedListener(connectFailedListnr)
                .addApi(LocationServices.API).build();

    mLocationRequest = LocationRequest.create();
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL_IN_MILLISECONDS);

请求位置更新

LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, mLocationRequest, mLocationListener);

删除位置更新

if (mLocationClient.isConnected()) {
            LocationServices.FusedLocationApi.removeLocationUpdates(mLocationClient, mLocationListener);
 }
 mLocationClient.disconnect();

有人知道这个问题吗?

最佳答案

我遇到了同样的问题。不是 FusedLocationApi 保持 GPS 运行,即使应用程序被置于后台并且 onStop() 被触发。这是谷歌地图!!我在另一个 Fragment 中包含了一个 Map 并且有一段时间没有被识别。我认为 Renadh 也包含一个 GoogleMap View 。

因此,只有在应用程序运行时才让 GPS 在应用程序中运行

@Override
public void onStop() {
    mGoogleMap.setMyLocationEnabled(false);
    super.onStop();
}

到您的 fragment/Activity 。

不要忘记启用您的位置

mGoogleMap.setMyLocationEnabled(true);

如果您需要在 map View 中使用蓝色标记。在 onCreate() 中或在您设置 map 的任何地方。

关于android - 为什么即使我在 android 中删除了融合位置 api 的位置更新,GPS 仍在使用中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457068/

相关文章:

android - 在使用 RxJava2 和 Retrofit2 时如何访问响应 header ?

iphone - 我们可以在 iPhone 中以编程方式打开/关闭 GPS 吗?

android - 如何在 android 4.4.2 中应用程序进入后台时禁用位置监听器

php - 如何计算两个 gps 坐标之间的距离(不是位移)

android - 每 1 分钟从服务器获取的 Gps LatLong 在 map 中显示为标记。但是标记正在复制

java - 从多个 Activity 在模型中设置数据

android - 发布您的 Android 应用

android - 当我尝试播放下一首歌曲时,无法第二次重置数据源

android - 从服务器获取数据时互联网连接丢失时调用什么异常?

java - 检测两个 GPS 坐标边界框重叠