Android WorkManager против JobScheduler
Зачем нужен новый Android WorkManager, если у нас уже есть JobScheduler вместе с несколькими отличными backports (AndroidJob и FirebaseJobDispatcher) с одинаковой функциональностью? Есть ли у него какие-то способности убивать или что-то еще? Потому что я не вижу ничего, из-за чего я хочу перейти на еще один планировщик.
Ответы
Ответ 1
"WorkManager имеет много приятных функций, но его главная цель - использовать API JobScheduler для более старых устройств"... Подождите, но у нас уже есть несколько backports. Что с ними не так? Чтобы сократить его:
-
FireaseJobDispatcher в порядке, но для Google Play требуется запланировать рабочие места, что не очень хорошо, если мы ориентируемся на Китай, например.
-
Evernote AndroidJob - отличный backport с большой функциональностью. Imho, это был лучший выбор для планирования любой работы. Но теперь в последней версии библиотеки используется вышеупомянутый WorkManager под капотом. И, к сожалению, рано или поздно библиотека будет устаревшей:
Если вы начинаете новый проект, вы должны использовать WorkManager вместо этой библиотеки. Вы также должны начать перенос кода из этой библиотеки в WorkManager. В какой-то момент в будущем эта библиотека будет устаревшей.
Они предлагают переключиться на WorkManager, потому что он предоставляет больше возможностей, и они также дают нам небольшое сравнение:
| Feature | android-job | WorkManager |
| ------------------ | ----------- | ----------- |
| Exact jobs | Yes | No |
| Transient jobs | Yes | No |
| Daily jobs | Yes | No |
| Custom Logger | Yes | No |
| Observe job status | No | Yes |
| Chained jobs | No | Yes |
| Work sequences | No | Yes |
Imo, последние 3 функции очень полезны и поддерживаются только WorkManager. Поэтому ответ на мой последний вопрос - да, у него есть некоторые функции убийства:
- Не требуется Google Play
- Queryable
- змеевидных
- оппортунистических
Чтобы узнать больше о WorkManager, обязательно посмотрите этот разговор Sumir Kataria
PS Если кто-нибудь знает, почему FirebaseJobDispatcher активно поддерживается инженерами Google, а не устарел, напишите в комментариях ниже :)
Ответ 2
WorkManager просто кажется, что Google отвечает на Evernote Android-Job library, но с некоторыми улучшениями. Он использует JobScheduler, Firebase JobDispatcher и AlarmManager так же, как Android-Job, в зависимости от уровня API устройства. Их использование тегов выглядит примерно одинаково, и назначение ограничений для работы/работы достаточно схожи.
Две особенности, которые меня волнуют, - это: возможность целенаправленной работы и способность быть оппортунистической по работе с ограничениями. Первый позволит работать (рабочие места), чтобы быть разбитым и более модульным для меня. И с более модульной работой каждая работа может иметь меньше ограничений, улучшая вероятность того, что они будут выполнены раньше (оппортунистически). Например, большая часть обработки может завершиться до того, как будет выполнена работа с сетевым ограничением.
Поэтому, если вы довольны своей текущей реализацией планировщика, и две функции, о которых я упоминал, не добавляют ценности, я пока не вижу огромной выгоды для создания коммутатора. Но если вы пишете что-то новое, вероятно, стоит использовать WorkManager.
Ответ 3
WorkManager
использует сервис JobScheduler
для планирования заданий. Если JobScheduler
не поддерживается устройством, то оно использует службу Firebase JobDispatcher
.
Если Firebase JobDispatcher
недоступна на устройстве, оно будет использовать AlarmManager
и BroadcastReceiver
.
Так что с WorkManager
вам не нужно беспокоиться об обратной совместимости. В дополнение к этому он позволяет определять ограничения, которые должны быть выполнены для выполнения задания, такие как определение сетевых ограничений, уровня заряда батареи, состояния зарядки и уровня хранения.
Это позволяет цепочку задач и передачу аргумента к работе.
http://www.zoftino.com/scheduling-tasks-with-workmanager-in-android
Ответ 4
WorkManager находится поверх JobScheduler и AlarmManager. WorkManager выбирает правильные API для использования в зависимости от условий, таких как уровень API пользовательского устройства
WorkManager - это простая, но невероятно гибкая библиотека, которая имеет много дополнительных преимуществ. К ним относятся:
-Support for both asynchronous one-off and periodic tasks.
-Support for constraints such as network conditions, storage space, and charging -status
-Chaining of complex work requests, including running work in parallel.
-Output from one work request used as input for the next.
-Handles API level compatibility back to API level 14.
-Works with or without Google Play services.
-Follows system health best practices.
-LiveData support to easily display work request state in UI.