我在我的应用程序中使用 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/