Intentservice в контексте JobScheduler

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

Вопросов:

  1. Подходит ли этот дизайн для Oreo и Nougat?

  2. Если услуга намерения занимает несколько минут, разрешит ли система?

Ссылка: Средняя ссылка




Ответы (1)


Если ваша работа зависит от ограничений сети, вам необходимо установить setRequiredNetworkType, поскольку есть некоторые новые изменения, внесенные в разработку oreo для планировщика заданий, вы должны выбрать эту часть в соответствии с вашим потоком, пожалуйста, примите во внимание, что

Вызов setRequiredNetworkType определяет сеть как строгое требование для вашей работы. Если запрошенная сеть недоступна, ваше задание никогда не будет запущено. См. SetOverrideDeadline (long), чтобы изменить это поведение. Вызов этого метода отменяет любые требования, ранее определенные в setRequiredNetwork (NetworkRequest); обычно требуется вызвать только один из этих методов.

Когда ваше задание выполняется в onStartJob (JobParameters), обязательно используйте конкретную сеть, возвращаемую getNetwork (), в противном случае вы будете использовать сеть по умолчанию, которая может не соответствовать этому ограничению.

для получения дополнительных сведений перейдите к этому источнику указанного выше ответа https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiredNetwork(android.net.NetworkRequest)

person krishank Tripathi    schedule 05.04.2018
comment
Но мой вопрос: должен ли я выполнять все функции синхронизации внутри onStartJob () или если я запускаю, intentService будет эквивалентен этому? Кстати, спасибо за дополнительную информацию, такую ​​как крайний срок и getNetwork (). - person Aram; 05.04.2018