我正在前台服务中创建一个LocationManager。它似乎可以正常工作约一分钟,但是此后没有记录新位置。如果我禁用了该应用的电池优化功能,则位置会不断更新。似乎没有任何迹象表明该前台服务已被终止,因为该通知仍然可见。
Android 9,小米Redmi注意事项7。
[进一步调查后,我通过简单的Log.v向前台服务添加了一个计时器。即使位置不再通过,这似乎仍会继续记录。
val updateIntervalInMilliseconds: Long = 3000;
val updateDistanceInMeters: Float = 2f;
locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
val criteria = Criteria();
criteria.accuracy = Criteria.ACCURACY_FINE;
criteria.powerRequirement = Criteria.POWER_HIGH;
criteria.isAltitudeRequired = true;
criteria.isSpeedRequired = false;
criteria.isCostAllowed = true;
criteria.isBearingRequired = false
criteria.horizontalAccuracy = Criteria.ACCURACY_HIGH
criteria.verticalAccuracy = Criteria.ACCURACY_HIGH;
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
throw RuntimeException("Location tracking started but permissions have not been granted");
} else {
locationManager!!.requestLocationUpdates(locationManager!!.getBestProvider(criteria, true), updateIntervalInMilliseconds, updateDistanceInMeters, locationListener, null)
}
请检查this可能会对您有所帮助。