Так я запускаю службу определения местоположения.
private void initLocationService() {
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if(getPermissions(android.Manifest.permission.ACCESS_FINE_LOCATION,GET_LOCATION_PERMISSION)){
startService(new Intent(HomeActivity.this, LocationUpdateService.class));
}
}
, а в LocationUpdateService
я запускаю ее как STICKY
.Так что он продолжает работать в фоновом режиме.
public class LocationUpdateService extends Service implements
LocationListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
IServiceResponse {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand: ");
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(BACKGROUND_INTERVAL);
mLocationRequest.setFastestInterval(BACKGROUND_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
Поскольку мое приложение в настоящее время нацелено на Api 25
(Nougat)
, какие изменения мне нужно внести в этот конкретный сервис, чтобы эта работа работала в Oreo
Я до сих пор не наденуне имеет доступа к методу startForegroundService()
при использовании compileSdkVersion 25
.
Это мои gradle
настройки.
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
minSdkVersion 21
targetSdkVersion 25
}