Мое приложение предоставляет данные о местонахождении в режиме реального времени, используя датчики, такие как акселерометр и т. Д., Для определения шагов пользователя.Моя фоновая служба запускается всего минуту или две, прежде чем она останавливается.Я не уверен, правильно ли я реализовал фоновый сервис для 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