WorkManager для длительного сетевого подключения?

Я хотел бы использовать WorkManager для загрузки файлов из Интернета, но меня огорчает ограничение JobScheduler - 10 минут на работу. Возможно, есть альтернативные способы или вам нужно использовать сервис переднего плана?

У вас есть ссылка на часть документации, в которой описывается 10-минутный лимит? Только в спящем режиме? Или вообще, если приложение в фоновом режиме?

Dean 28.10.2018 17:49

Да ладно, нашел здесь: developer.android.com/topic/performance/power/power-details

Dean 28.10.2018 18:05
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
488
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не слышал о каких-либо 10-минутных окнах, накладываемых на работу / вакансии как таковые, однако я нашел ссылку на 10-минутное ограничение для вакансий в Ограничения по управлению питанием:

If jobs restrictions are in force, the app is granted a window of ten minutes at the specified interval. At the end of the ten minutes, all jobs are postponed until the next window.

Что на самом деле не говорит нам, что произойдет, если задание все еще выполняется на этой 10-минутной отметке, однако я бы посоветовал, если ваша работа занимает более 10 минут, вы должны структурировать ее по-другому.

Первым делом нужно запланировать новую работу для каждого файла, который необходимо загрузить. Вероятно, вам не стоит пытаться загружать все файлы сразу. Если вам нужна гарантия того, что некоторые файлы загружаются в определенном порядке, подумайте о создании цепь для различных задач загрузки. Эта стратегия также имеет 2 больших преимущества: если загрузка одного файла не удалась, вы можете перенести загрузку только этого файла, а не всех X-файлов, которые вы, возможно, уже загрузили к этому моменту, и - согласно документам по управлению питанием - всех файлов, которые затем не сохраняются. t был загружен, будет просто отложен до следующего 10-минутного окна.

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

Наконец, я бы серьезно задался вопросом, требует ли ваша бизнес-логика, чтобы приложение выполняло столько работы, когда действуют ограничения на батарею. Вероятно, лучше указать, что этот вид Работы должен выполняться во время зарядки или, по крайней мере, не в режиме ожидания (не в режиме ожидания), чтобы полностью избежать этого 10-минутного окна.

Надеюсь, этот ответ поможет!

Другие вопросы по теме