Фоновая служба не работает постоянно с использованием сенсоров Android, чтобы предоставить данные о местоположении - PullRequest
0 голосов
/ 28 июня 2019

Мое приложение предоставляет данные о местонахождении в режиме реального времени, используя датчики, такие как акселерометр и т. Д., Для определения шагов пользователя.Моя фоновая служба запускается всего минуту или две, прежде чем она останавливается.Я не уверен, правильно ли я реализовал фоновый сервис для Android O, поскольку есть новые требования и ограничения.

В Основном действии я запускаю сервис с такими строками:

    Intent serviceIntent = new Intent();
        BackgroundIntentService.enqueueWork(this, BackgroundIntentService.class, 6767, serviceIntent);
    // Static variable to check in the JobIntentService if it should still run.
    Config.backgroundServiceActive = true;
    //Then I close the Mainactivity and the Service runs as expected in the background.
    Intent startMain = new Intent(Intent.ACTION_MAIN);
                startMain.addCategory(Intent.CATEGORY_HOME);
                startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(startMain);

Мой BackgroundIntentService является JobIntentService:

public class BackgroundIntentService extends JobIntentService {

@Override
protected void onHandleWork(@NonNull Intent intent) {

   //here I create a new object which handles the sensors
   //I also pass over the context of this JobIntentService

   //This writes in the log just to check if the service is still running.
    while (Config.backgroundServiceActive){
        try{
            Log.i("BackgroundService", "ICH AM AWAKE ");
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

}

В своем манифесте я объявил службу:

        <service
        android:name=".tools.BackgroundIntentService"
        android:permission="android.permission.BIND_JOB_SERVICE"
        android:exported="false"/>

Когда моя MainActivity закрывается, и моя служба работает в фоновом режиме, выполняя свою работу, а также записываяв журнале все выглядит нормально.Но через 1-2 минуты сервис просто останавливается.Что я сделал не так?Пожалуйста, убедитесь, что ваш ответ учитывает последние изменения в Android O.

Я использовал это, что немного сбивало с толку: https://developer.android.com/training/run-background-service/create-service#java И это: https://developer.android.com/reference/androidx/core/app/JobIntentService

...