如果我让应用程序开启了几个小时,融合定位就停止发送更新了...
我正在创建高优先级的位置请求,这里是代码:
LocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setExpirationDuration(TimeUnit.SECONDS.toMillis(LOCATION_TIMEOUT_IN_SECONDS))
.setInterval(LOCATION_UPDATE_INTERVAL);
这里涉及客户端和回调:
LocationCallback mLocationCallback = new LocationCallback() {
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
super.onLocationAvailability(locationAvailability);
}
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
//Update location
}
};
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
mFusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);
LOCATION_TIMEOUT_IN_SECONDS的时间设置为5秒,但是更新并不总是在运行,当我的应用程序需要位置时,我会手动停止和启动它,就像文档中所述。
如果应用程序运行了一两个小时,一切都正常,但是如果我打开它很长一段时间,它就停止工作了...
我在按钮点击事件中从Activity请求位置更新,10秒后手动停止位置更新... 如果我整晚都没关掉它,这意味着Activity全夜都在运行... 然后当我再次请求位置更新时,它就不会出现了...
有什么解决方案或想法吗?
onResume
中移除位置更新回调。 - M.Waqas Pervez