Android WorkManager против JobScheduler - PullRequest
0 голосов
/ 10 мая 2018

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

Ответы [ 4 ]

0 голосов
/ 09 августа 2019

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.
0 голосов
/ 25 июня 2018

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

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

  2. Evernote AndroidJob - отличный бэкпорт с большим количеством функций. Имхо, это было лучшим выбором для планирования любой работы. Но теперь последняя версия библиотеки использует вышеупомянутый 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

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

0 голосов
/ 11 ноября 2018

WorkManager использует сервис JobScheduler для планирования заданий.Если устройство JobScheduler не поддерживается устройством, оно использует службу Firebase JobDispatcher.Если Firebase JobDispatcher недоступен на устройстве, он будет использовать AlarmManager и BroadcastReceiver.

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

Позволяет связывать задачии передача аргумента на работу.

http://www.zoftino.com/scheduling-tasks-with-workmanager-in-android

0 голосов
/ 11 мая 2018

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

Две особенности, которые меня радуют: возможность объединять усилия и способность быть гибкими в работе сограничения.Первый позволит разбить работу (рабочие места) и сделать ее более модульной.А при более модульной работе каждая часть работы может иметь меньше ограничений, повышая вероятность того, что они будут выполнены раньше (оппортунистическая).Например, большая часть обработки может быть завершена до того, как будет выполнена работа с сетевым ограничением.

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

...