Будет ли startService () работать, если мое приложение предназначено для устройств на нуге? - PullRequest
0 голосов
/ 28 мая 2018

Так я запускаю службу определения местоположения.

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
}

1 Ответ

0 голосов
/ 28 мая 2018

startForegroundService () доступно из API уровня 26 НЕ из API level 25.

Измените compileSdkVersion 25 и buildToolsVersion "25.0.3" на последнюю версию и попробуйте.

Например, в моем случае я использую ниже:

compileSdkVersion 26
buildToolsVersion '27.0.3'
...