Android WorkManager против JobScheduler

зачем нам нужен новый Android администратора заданий если мы уже есть a JobScheduler вместе с несколькими отличными backports (AndroidJob и FirebaseJobDispatcher) С той же функциональностью? У него есть какие-нибудь убийственные черты или что-то в этом роде? Потому что я не вижу что-нибудь это заставляет меня хотеть перейти на еще один планировщик.

2 ответов


WorkManager просто кажется ответом Google на библиотеку Android-заданий Evernote, но с несколькими улучшениями. Он использует JobScheduler, Firebase JobDispatcher и AlarmManager так же, как Android-задание в зависимости от уровня API устройства. Их использование тегов выглядит почти одинаково, и назначение ограничений для заданий / работы достаточно похоже.

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

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


"WorkManager имеет много приятных функций, но его основная цель-использовать API JobScheduler на старых устройствах"... Подожди, но у нас уже есть бэкпорты. Что с ними не так? Короче:

  1. FireaseJobDispatcher - это хорошо, но это требуется Google Play планировать рабочие места, что не хорошо, если мы нацелены на Китай, например.

  2. приложения Evernote AndroidJob является отличным backport с большим количеством функций. Имхо, это был лучший выбор для планирования любой работы. Но теперь последняя версия библиотеки использует вышеупомянутый WorkManager под капотом. И, к сожалению, рано или поздно!--14-->библиотека будет устаревшей:

Если вы начинаете новый проект, вы должны использовать 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 Катариа

P. S. Если кто-нибудь знает, почему FirebaseJobDispatcher активно поддерживается инженерами Google вместо того, чтобы быть устаревшим, напишите в комментариях ниже :)