WorkManager для длительного сетевого подключения? - PullRequest
0 голосов
/ 28 октября 2018

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

1 Ответ

0 голосов
/ 28 октября 2018

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...