Тайм-аут для фоновых служб Android на уровне API 26

В Android Oreo введены новые ограничения для фоновых служб. В документе указано

«Пока приложение находится на переднем плане, оно может свободно создавать и запускать как активные, так и фоновые службы. Когда приложение переходит в фоновый режим, у него есть окно несколько минут, в течение которого ему все еще разрешено создавать и использовать сервисы. В конце этого окна приложение считается бездействующим».

(выделено мной)

Сколько длится "несколько минут"?


person Urinprobe    schedule 13.03.2018    source источник
comment
По крайней мере, недостаточно долго, чтобы служба работала вечно в фоновом режиме. Что именно вы пытаетесь сделать?   -  person Eselfar    schedule 13.03.2018
comment
У меня есть приложение, работающее в самодельном режиме киоска, которое необходимо перезапустить в случае сбоя (плюс другие службы, необходимые для него, которые необходимо перезапустить в случае сбоя). Он также должен работать на Android 5.   -  person Urinprobe    schedule 13.03.2018
comment
И меня в основном интересуют сроки   -  person Urinprobe    schedule 13.03.2018


Ответы (2)


Определите свое приложение как средство запуска и замените средство запуска по умолчанию (деактивируйте его) устройства. Программа запуска будет автоматически перезапущена системой в случае сбоя. Поскольку лаунчером будет ваше приложение, оно будет автоматически перезапущено.

Добавьте в свой манифест (как объяснено здесь):

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <!-- The following two intent-filters are the key to set homescreen -->
  <category android:name="android.intent.category.HOME" />
  <category android:name="android.intent.category.DEFAULT" />

</intent-filter>
person Eselfar    schedule 13.03.2018
comment
Таким образом, вам не нужно, чтобы служба работала в фоновом режиме. - person Eselfar; 13.03.2018
comment
Я уже сделал это. Я пытаюсь добавить дополнительные измерения, чтобы все работало и было автоматизировано. Плюс хотелось узнать таймфрейм на несколько минут вне зависимости от решения задачи - person Urinprobe; 13.03.2018
comment
Несколько минут означают, что у приложения достаточно времени, чтобы выполнить все необходимое, прежде чем система остановит службы и все такое. Так что продолжительность нескольких минут не имеет большого значения. Единственное, что вам нужно знать, это то, что ваши службы будут остановлены в какой-то момент, когда приложение находится в фоновом режиме. Таким образом, ваша реализация должна учитывать это. - person Eselfar; 13.03.2018
comment
Таким образом, я мог бы продолжать следить за работоспособностью самого приложения и перезапускать его при необходимости? - person Urinprobe; 13.03.2018

Если вы используете библиотеку volley для вызова API, вам необходимо добавить код ниже

   int socketTimeout = 30000;//30 seconds - change to what you want
    RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
    request.setRetryPolicy(policy);

    APIController.getInstance(context).addRequest(request, TAG);
person Patel Hiren    schedule 13.03.2018
comment
Насколько это актуально? - person Sachinwick; 05.06.2019