Я бы не стал использовать JobScheduler или AlarmManager. WorkManager находится поверх них и обрабатывает все за вас, независимо от того, на какой версии Android работает ваше приложение.
https://codelabs.developers.google.com/codelabs/android-workmanager Вот хороший пример WorkManager, где для обработки изображений используется Worker, но он отлично справляется с любыми долгосрочными задачами. Вы можете указать ограничения для различных вещей, в том числе если вы хотите, чтобы устройство простаивало для запуска рабочего. Вы также можете связать воркеров, передавать данные от одного к другому, даже сгруппировать их и запустить параллель, дождаться завершения всех и затем продолжить работу с другим (или несколькими) работниками. В зависимости от вашего варианта использования вы можете запустить воркера из любого места (активность, широковещательный приемник, stc).
На самом деле я использую воркеров, запущенных из широковещательного приемника, для выполнения некоторых вызовов api, только когда у вас, конечно, есть подключение к Интернету (настраиваемое ограничение), и его так легко настроить и так хорошо работает, я могу только рекомендовать его к использованию (и благослови его Google за создание этих библиотек переменного тока). Мне также очень нравится тот факт, что WorkManager сохраняет работы в db с местом, поэтому он может забрать их всякий раз, когда проверяются все условия, даже если вы перезапустите устройство между ними. Если у вас настроен мониторинг (например, стето), вы действительно можете увидеть, как он сохраняет задания в своей собственной базе данных.
Он все еще находится в альфа-версии, но настолько прочен, что я не думаю, что они сильно изменятся, пока не выпустят финальную версию.
person
Drusantia
schedule
06.06.2018