Менеджер работ
| Последнее обновление | Стабильный релиз | Предварительная версия для выпуска | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 28 января 2026 г. | 2.11.1 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от WorkManager, необходимо добавить репозиторий Google Maven в ваш проект:
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
классный
dependencies { def work_version = "2.11.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Котлин
dependencies { val work_version = "2.11.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Для получения информации об использовании расширений Kotlin см. документацию ktx .
Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.
Для получения более подробной информации см. документацию по системе отслеживания ошибок .
Версия 2.11
Версия 2.11.1
28 января 2026 г.
Выпущена версия androidx.work:work-*:2.11.1 . Версия 2.11.1 содержит следующие коммиты .
Исправлены ошибки
- Исправлена ошибка, из-за которой ограничение состояния сети не передавалось при заблокированном подключении на Android 15 и выше. ( I5abb7 , b/465016918 )
- Исправлена ошибка, из-за которой отслеживание сетевых ограничений не учитывало состояние блокировки при определении своего начального значения. ( I8a0a2 , b/452081708 )
- Исправлена ошибка, из-за которой ограничение сетевого запроса не проходило при заблокированном подключении на Android 15 и выше. ( I60f24 , b/452081708 )
Версия 2.11.0
22 октября 2025 г.
Выпущена версия androidx.work:work-*:2.11.0 . Версия 2.11.0 содержит следующие коммиты .
Важные изменения по сравнению с версией 2.10.0:
- В версии
minSdkобновлен API с 21 до 23. - В конструктор конфигурации
WorkManagerдобавлен APIsetRemoteSessionTimeoutMillis, позволяющий настраивать время, в течение которого сессияRemoteWorkManagerостается активной с момента последнего использования.
Версия 2.11.0-rc01
8 октября 2025 г.
Выпущена версия androidx.work:work-*:2.11.0-rc01 . Версия 2.11.0-rc01 содержит следующие коммиты .
Версия 2.11.0-beta01
24 сентября 2025 г.
Выпущена версия androidx.work:work-*:2.11.0-beta01 . Версия 2.11.0-beta01 содержит следующие коммиты .
Изменения в API
- Добавить
stopRunningWorkWithReasonвWorkManagerTestDriver. ( Ie53b2 , b/439955564 )
Исправлены ошибки
- Исправлена ошибка, из-за которой служба переднего плана останавливалась при наличии ожидающих команд ( Iae822 , b/432069314 ).
- Исправлена ошибка, из-за которой удаленный сопрограммный обработчик не мог отвязать удаленный сервис ( I842f2 , b/247113322 )
Версия 2.11.0-alpha01
27 августа 2025 г.
Выпущена версия androidx.work:work-*:2.11.0-alpha01 . Версия 2.11.0-alpha01 содержит следующие коммиты .
Изменения в API
- Минимальный SDK был обновлен с API 21 до API 23 ( Ibdfca , b/380448311 , b/435705964 , b/435705223 ).
- В конструктор конфигурации WorkManager добавлен API
setRemoteSessionTimeoutMillis, позволяющий настраивать время, в течение которого сессия RemoteWorkManager остается активной с момента последнего использования. ( Ib23c8 ) - Добавьте экспериментальный API в
WorkRequest.Builderдля применения задержки при прерывании работы системой. ( Ie2dc7 , b/335513480 ) - Добавить тестовый API для передачи в
TestListenableWorkerBuilderдругого класса обработчика, отличного от того, который создается, для поддержки пользовательских реализацийWorkerFactory( If6bff , b/389154854 )
Исправлены ошибки
- Кэширование сетевых возможностей в
SharedNetworkCallbackдля предотвращения ненужных межпроцессных взаимодействий ( IE4027 , b/427115602 ) - Исправлена ошибка в оценке сетевых ограничений, из-за которой рабочие элементы после первого не получали текущие сетевые возможности и вместо этого сталкивались с ошибкой
ConstraintsNotMetпосле истечения таймаута ( Ib6a66 , b/427115602 ).
Версия 2.10
Версия 2.10.5
24 сентября 2025 г.
Выпущена версия androidx.work:work-*:2.10.5 . Версия 2.10.5 содержит следующие коммиты .
Исправлены ошибки
- Исправлена ошибка, из-за которой служба переднего плана останавливалась при наличии ожидающих команд ( Iae822 , b/432069314 ).
Версия 2.10.4
10 сентября 2025 г.
Выпущена версия androidx.work:work-*:2.10.4 . Версия 2.10.4 содержит следующие коммиты .
Исправлены ошибки
- Исправлена ошибка, из-за которой
RemoteCoroutineWorkerне мог отвязать удаленный сервис ( I842f2 , b/247113322 ).
Версия 2.10.3
30 июля 2025 г.
Выпущена версия androidx.work:work-*:2.10.3 . Версия 2.10.3 содержит следующие коммиты .
Исправлены ошибки
- Исправлена ошибка, из-за которой работники с идентичными сетевыми ограничениями, как у предыдущего работника, сообщали о несоблюдении этих ограничений. ( b/427115602 ).
Версия 2.10.2
18 июня 2025 г.
Выпущена версия androidx.work:work-*:2.10.2 . Версия 2.10.2 содержит следующие коммиты .
Исправлены ошибки
- Исправлена ошибка, возникавшая при сохранении рабочих процессов с сетевыми запросами и возможностями по умолчанию, которая приводила к повторному добавлению удаленных возможностей, вызывая некорректную работу рабочих процессов с сетевыми ограничениями. ( b/409716532 )
- Исправлена ошибка, из-за которой рабочие процессы с сетевыми ограничениями не выполнялись оперативно из-за несоблюдения ограничений, даже если сеть и необходимые возможности были доступны. ( b/423403088 )
Версия 2.10.1
23 апреля 2025 г.
Выпущена версия androidx.work:work-*:2.10.1 . Версия 2.10.1 содержит следующие коммиты .
Исправлены ошибки
- Уменьшить вероятность возникновения исключения
TooManyRequestsExceptionпри регистрации объектаNetworkCallback, используемого для отслеживания ограничений, вWorkManager. ( b/231499040 , b309d5 ).
Версия 2.10.0
30 октября 2024 г.
Выпущена версия androidx.work:work-*:2.10.0 . Версия 2.10.0 содержит следующие коммиты .
Значительные изменения по сравнению с версией 2.9.1
- Добавлены теги трассировки к заданиям из
WorkManagerчто значительно упрощает понимание команды 'adb shell dumpsys jobscheduler', поскольку она будет содержать имя выполняемого рабочего процесса. Также добавлены разделы трассировки вокруг ключевых областейWorkManager. - Для управления диспетчером, в котором выполняется
CoroutineWorker, был добавленConfiguration.workerCoroutineContext. - Разработчики могут указать
NetworkRequestв качестве ограничения для рабочего процесса с помощью методаConstraints.setRequiredNetworkRequest. Это позволяет более точно контролировать, в какой сети должен работать этот рабочий процесс. -
WorkManager2.10.0 теперь реализована совместимость с SDK 35, и внесены различные изменения для обеспечения совместимости с SDK 35.
Версия 2.10.0-rc01
24 октября 2024 г.
Выпущена версия androidx.work:work-*:2.10.0-rc01 . Версия 2.10.0-rc01 содержит следующие коммиты .
Версия 2.10.0-beta01
2 октября 2024 г.
Выпущена версия androidx.work:work-*:2.10.0-beta01 . Версия 2.10.0-beta01 содержит следующие коммиты .
Версия 2.10.0-alpha04
18 сентября 2024 г.
Выпущена версия androidx.work:work-*:2.10.0-alpha04 . Версия 2.10.0-alpha04 содержит следующие коммиты .
Изменения в API
- Добавьте причину остановки
STOP_REASON_FOREGROUND_SERVICE_TIMEOUTдля случаев остановки фонового рабочего процесса из-за истечения времени выполнения в зависимости от типа фоновой службы. ( Ibd0af )
Версия 2.10.0-alpha03
4 сентября 2024 г.
Выпущена версия androidx.work:work-*:2.10.0-alpha03 . Версия 2.10.0-alpha03 содержит следующие коммиты .
Новые функции
- Добавлены теги трассировки к заданиям из
WorkManagerчто значительно упрощает понимание команды 'adb shell dumpsys jobscheduler', поскольку она будет содержать имя выполняемого рабочего процесса. Также добавлены разделы трассировки вокруг ключевых областейWorkManager.
Изменения в API
- WorkManager 2.10.0 теперь скомпилирован с использованием SDK 35.
- Исправлена ошибка, из-за которой рабочие процессы переднего плана типов 'short service' и 'data sync' завершались по таймауту и вызывали ANR, если
WorkManagerне вызывалstopSelf(). Это исправление применимо только к устройствам с API 34 и 35, где были введены типы служб переднего плана. ( ca06b2 , b/364508145 ) - Новые API
WorkerParameters, позволяющие переключать удаленный процесс, к которому привязываетсяWorkerпри использованииWorkerFactory. ( Ibdc8a , Ie8a90 , I7373f )
Исправлены ошибки
- Исправлена ошибка, приводящая к сбою, вызванному попыткой
WorkManagerперезапустить длительно работающий рабочий процесс (т.е. рабочий процесс на переднем плане), если для типа работы на переднем плане были отозваны необходимые разрешения Android 14. ( b/333957914 ) - Удалено ручное описание доступа к новым API платформы, поскольку это происходит автоматически посредством моделирования API при использовании R8 с AGP 7.3 или более поздней версии (например, R8 версии 3.3) и для всех сборок при использовании AGP 8.1 или более поздней версии (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется обновиться до D8 версии 8.1 или более поздней. Подробнее см. в этой статье . ( Ia60e0 , b/345472586 )
Версия 2.10.0-alpha02
17 апреля 2024 г.
Выпущена версия androidx.work:work-*:2.10.0-alpha02 . Версия 2.10.0-alpha02 содержит следующие коммиты .
Изменения в API
- Добавлена возможность отправки трассировочных данных с помощью настраиваемого параметра
@RestrictToTracerвWorkManager. ( I17d7f , b/260214125 ) - Для управления диспетчером, в котором выполняется
CoroutineWorker, был добавленConfiguration.workerCoroutineContext. Это позволяет полностью избежать использованияDispatchers.DefaultвWorkManager. ( ICD1B7 ) - Добавить пользовательские обработчики исключений для рабочих процессов ( Ib1b74 , b/261190695 )
- Теперь
OneTimeWorkRequest.BuilderиPeriodicWorkRequest.Builderможно создавать с помощьюKClassвместоClass:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()( Ib55f6 ) - Класс
WorkManagerбыл переведён на Kotlin. Теперь методы, возвращающиеLiveData,ListenableFutureилиFlowпредоставляют корректную информацию о возможности значения NULL. Если предположения о возможности значения NULL в исходном коде были неверны, это могло бы потребовать изменений в исходном коде клиента. ( If6757 )
Версия 2.10.0-alpha01
24 января 2024 г.
Выпущена версия androidx.work:work-*:2.10.0-alpha01 . Версия 2.10.0-alpha01 содержит следующие коммиты.
Новые функции
- Разработчики могут указать
NetworkRequestв качестве ограничения для рабочего процесса с помощью методаConstraints.setRequiredNetworkRequest. Это позволяет более точно контролировать, в какой сети должен работать этот рабочий процесс.
Изменения в API
- Добавлена возможность указывать
NetworkRequestв качестве ограничения. ( Id98a1 , b/280634452 )
Версия 2.9
Версия 2.9.1
7 августа 2024 г.
Выпущена версия androidx.work:work-*:2.9.1 . Версия 2.9.1 содержит следующие коммиты .
Исправлены ошибки
- Исправлена ошибка, приводящая к сбою, вызванному попыткой
WorkManagerперезапустить длительно работающий рабочий процесс (т.е. рабочий процесс на переднем плане), если для типа работы на переднем плане были отозваны необходимые разрешения Android 14. ( b/333957914 )
Версия 2.9.0
29 ноября 2023 г.
Выпущена библиотека androidx.work:work-*:2.9.0 . Версия 2.9.0 содержит следующие коммиты.
Важные изменения по сравнению с версией 2.8.0
- Наблюдаемость через
Flow. ВместоLiveData, теперь прогресс работника можно отслеживать через Flow с помощью методовWorkManager.getWorkInfosFlowи аналогичных. - Теперь
WorkManagerпредоставляет подсказку о причине предыдущей остановки рабочего процесса. Эту информацию можно получить непосредственно у рабочего процесса с помощью методаgetStopReason()или изWorkInfoс помощью методаgetStopReason(). - Точное планирование периодических задач осуществляется с помощью
setNextScheduleTimeOverride. Это позволяет динамически рассчитывать следующее расписание периодических задач, что может быть использовано для реализации таких расширенных функций, как адаптивное время обновления, пользовательское поведение повторных попыток или запуск задачи отображения новостной ленты до пробуждения пользователя каждое утро без смещения. Для предотвращения отмены текущей запущенной задачи при планировании следующей, следует использовать методExistingPeriodicWorkPolicy.UPDATE. - Тестирование WorkManager с использованием многопоточности соответствует производственной среде.
ExecutorsMode.PRESERVE_EXECUTORSможно использовать вinitializeTestWorkManagerдля сохранения исполнителей, заданных вConfiguration, и использования реального основного потока. - API корутин, такие как
CoroutineWorkerбыли перемещены из дополнительного артефакта work-runtime-ktx в основной артефакт work-runtime. Теперь каталог work-runtime-ktx пуст.
Изменения в API
-
stopReasonбыла добавлена вWorkInfo. Она делаетstopReasonдоступной после завершения работы воркера. Это может быть полезно для удобного представления информацииstopReason, поскольку после остановки воркера само приложение может быть очень быстро завершено. ( I21386 ) - Разрешить установку
Clockчерез конфигурацию и использовать его для управления последовательностью выполнения тестов Worker. ( Ic586e ) - В
ListenableWorkerдобавлен методgetStopReason(), который выдает подсказку о причине остановки воркера. ( I07060 ) - Добавлен
WorkManagerTestInitHelper#closeWorkDatabase(), чтобы избежать предупреждения Closeguard об утечке ресурсов. ( Ia8d49 ) - Конструктор класса
WorkInfoтеперь является публичным, что может быть полезно при тестировании. ( Ia00b6 , b/209145335 ) -
work-runtime-ktxтеперь пуста,CoroutineWorkerи другие специфические для Kotlin утилиты теперь доступны в основном артефакте work-runtime. ( I71a9a ) - Добавлен метод
setNextScheduleTimeOverride, позволяющий точно устанавливать периодические графики работ ( I3b4da ). - Добавлена
getNextScheduleTimeMillisдля получения информации о запланированном времени выполнения вWorkInfo. ( I797e4 ) - Информация о начальной задержке и периодичности добавляется в
WorkInfo. ( I52f2f ) - Добавлен метод наблюдения за рабочими процессами через потоки с помощью методов
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow( If122a ) - Добавлены отсутствующие аннотации
@RequiresApi(...)к конструкторам и свойствамConstraints. Теперь они согласованы с соответствующими аннотациями в сеттерахConstraints.Builder, существовавшими ещё в ранних версияхWorkManager. ( I6d7d2 ) -
WorkManagerтеперь установлен отдельный лимит для обработчиков URI контента, гарантирующий им выделение слотов вJobScheduler, чтобы предотвратить пропуск обновлений контента при высокой нагрузке. Лимит можно настроить с помощьюConfiguration.Builder.setContentUriTriggerWorkersLimit. ( Ic128f ) - В
WorkInfoдобавлены ограничения. ( I162c0 )
Версия 2.9.0-rc01
18 октября 2023 г.
Выпущен репозиторий androidx.work:work-*:2.9.0-rc01 . Версия 2.9.0-rc01 содержит следующие коммиты.
- С момента последнего бета-релиза изменений не наблюдалось.
Версия 2.9.0-beta01
6 сентября 2023 г.
Выпущена библиотека androidx.work:work-*:2.9.0-beta01 . Версия 2.9.0-beta01 содержит следующие коммиты.
Изменения в API
- Добавлены константы для причин остановки, возвращаемых методами
WorkInfo.stopReasonиListenableWorker.stopReason( I0cc00 ).
Версия 2.9.0-alpha02
26 июля 2023 г.
Выпущен репозиторий androidx.work:work-*:2.9.0-alpha02 . Версия 2.9.0-alpha02 содержит следующие коммиты.
Новые функции
- Теперь
WorkManagerпредоставляет подсказку о причине предыдущей остановки рабочего процесса. Эту информацию можно получить непосредственно у рабочего процесса с помощью методаgetStopReason()или изWorkInfoс помощью методаgetStopReason().
Изменения в API
-
stopReasonбыла добавлена вWorkInfo. Она делаетstopReasonдоступной после завершения работы воркера. Это может быть полезно для удобного отображения информацииstopReason, поскольку после остановки воркера само приложение может быть очень быстро завершено. ( I21386 ) - Разрешить установку параметра Clock через конфигурацию и использовать его для управления последовательностью выполнения тестов Worker. ( Ic586e )
- В
ListenableWorkerдобавлен методgetStopReason(), который выдает подсказку о причине остановки воркера. ( I07060 ) - Добавлен
WorkManagerTestInitHelper#closeWorkDatabase(), чтобы избежать предупреждения Closeguard об утечке ресурсов. ( Ia8d49 )
Исправлены ошибки
- Добавлена возможность обхода параметра
overrideNextScheduleTimeс помощьюTestDriverи исправлены проблемы с тестируемостью. ( Ic2905 )
Версия 2.9.0-alpha01
7 июня 2023 г.
Выпущена версия androidx.work:work-*:2.9.0-alpha01 . Версия 2.9.0-alpha01 содержит следующие коммиты.
Новые функции
- Наблюдаемость через
Flow. ВместоLiveData, теперь прогресс работника можно отслеживать через Flow с помощью методовWorkManager.getWorkInfosFlowи аналогичных. - Точное планирование периодических задач осуществляется с помощью
setNextScheduleTimeOverride. Это позволяет динамически рассчитывать следующее расписание периодической задачи, что может быть использовано для реализации таких расширенных функций, как адаптивное время обновления, пользовательское поведение повторных попыток или запуск задачи отображения новостной ленты до пробуждения пользователя каждое утро без смещения. Для предотвращения отмены текущей запущенной задачи при планировании следующей, следует использовать методExistingPeriodicWorkPolicy.UPDATE. - Тестирование
WorkManagerс использованием многопоточности соответствует производственной среде.ExecutorsMode.PRESERVE_EXECUTORSможно использовать для сохранения исполнителей, заданных вConfiguration, и использования реального основного потока. - API корутин, такие как
CoroutineWorkerбыли перемещены из дополнительного артефактаwork-runtime-ktxв основной артефактwork-runtime. Теперьwork-runtime-ktxпуст.
Изменения в API
- Конструктор класса
WorkInfoтеперь является публичным, что может быть полезно при тестировании. ( Ia00b6 , b/209145335 ) -
work-runtime-ktxтеперь пуста,CoroutineWorkerи другие специфические для Kotlin утилиты теперь доступны в основном артефактеwork-runtime. ( I71a9a ) - Добавлен метод
setNextScheduleTimeOverride, позволяющий точно устанавливать периодические графики работ ( I3b4da ). -
getEarliestRunTimeMillisпереименована вgetNextScheduleTimeMillis. ( I2bd7a ) - Информация о следующем запланированном времени выполнения добавляется в
WorkInfo. ( I797e4 ) - Информация о начальной задержке и периодичности добавляется в
WorkInfo. ( I52f2f ) - Добавлен метод наблюдения за рабочими процессами через потоки с помощью методов
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow( If122a ) - Добавлены отсутствующие аннотации
@RequiresApi(...)к конструкторам и свойствам Constraints. Теперь они согласованы с соответствующими аннотациями в сеттерахConstraints.Builder, существовавшими ещё в ранних версияхWorkManager. ( I6d7d2 ) -
WorkManagerтеперь установлен отдельный лимит для обработчиков URI контента, гарантирующий им выделение слотов вJobScheduler, чтобы предотвратить пропуск обновлений контента при высокой нагрузке. Лимит можно настроить с помощьюConfiguration.Builder.setContentUriTriggerWorkersLimit. ( Ic128f ) - В
WorkInfoдобавлены ограничения. ( I162c0 )
Версия 2.8
Версия 2.8.1
22 марта 2023 г.
Выпущена библиотека androidx.work:work-*:2.8.1 . Версия 2.8.1 содержит следующие коммиты.
Исправлены ошибки
- Исправлена ошибка ANR в
RescheduleReceiver, которая ранее некорректно обрабатывала две одновременные широковещательные рассылки. ( b/236906724 )
Версия 2.8.0
8 февраля 2023 г.
Выпущена библиотека androidx.work:work-*:2.8.0 . Версия 2.8.0 содержит следующие коммиты.
Важные изменения по сравнению с версией 2.7.0
Новые функции
- Добавлена возможность неинтрузивного обновления
WorkRequestsс сохранением исходного времени постановки в очередь, цепочки вызовов и т. д. Подробное описание этой функции, а также документация Javadoc дляWorkManager.updateWorkиExistingPeriodicWorkPolicy.UPDATEдоступны в соответствующей статье блога .
Изменения в API
-
WorkManager.updateWorkбыла добавлена для обновления задач с сохранением их исходного времени постановки в очередь и цепочки вызовов. ( I9a248 , b/219446409 ) - Добавлена политика
ExistingPeriodicWorkPolicy.UPDATE. Эта политика позволяет обновлять периодическое задание по имени. Она похожа на существующуюREPLACE, но менее инвазивна: она не отменяет выполнение задания, если оно в данный момент выполняется, и сохраняет время постановки в очередь — начальная задержка и период рассчитываются исходя из исходного времени постановки в очередь, а не из времени обновления.REPLACEбыла объявлена устаревшей, чтобы уменьшить путаницу между очень похожими по названию политикамиREPLACEиUPDATE. Если вы все еще хотите сохранить предыдущую семантикуREPLACE, можно использовать недавно добавленнуюCANCEL_AND_REENQUEUE, которая идентичнаREPLACE. ( I985ed , b/219446409 ) - Добавлена возможность перехвата исключений планирования с помощью метода `setSchedulingExceptionHandler` , предоставляющего объект
Consumer<Throwable>`. - Добавлена возможность передавать объект
Consumer<Throwable>через setInitializationExceptionHandler для определения наличия проблем при попытке инициализации WorkManager. - Встроенные вспомогательные функции для
OneTimeWorkRequestиPeriodicWorkRequestбыли перемещены изandroidx.work:work-runtime-ktxвandroidx.work:work-runtime( I0010f , b/209145335 ) - Для непосредственного создания
WorkQueryбыли добавлены вспомогательные методыWorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTags. ( b/199919736 ) ( If48f2 , b/199919736 ) - Добавлена
getForegroundInfoдляWorker. ( Ic1ead ) -
RxWorkerкак для RxJava 2, так и для RxJava 3 теперь естьsetForegroundвозвращающийCompletable, который можно использовать вместоsetForegroundInfoAsync, возвращающегоListenableFuture -
RxWorkerкак для RxJava 2, так и для RxJava 3 методgetForegroundInfoвозвращаетSingle, что можно использовать вместоgetForegroundInfoAsync, возвращающегоListenableFuture. ( b/203851459 ) - Теперь ограничения можно создавать напрямую, а не с помощью
Constraints.Builder, что удобно для пользователей Kotlin. ( Idc390 , b/137568653 ) - Добавлена возможность проверки инициализации
WorkManager. Также добавлен новый APIgetConfiguration()для разработчиков библиотек, позволяющий получить конфигурацию, с которой был инициализированWorkManager. ( I6eff3 , b/212300336 )
Исправлены ошибки
- Исправлена ошибка в работе «жадного» планировщика, которая препятствовала немедленному запуску рабочих процессов при высокой нагрузке. ( I9686b , b/248111307 )
- Добавлена аннотация
@RequiresPermissionк API, требующим предоставления разрешенияPOST_NOTIFICATIONSв SDK 33 и выше. ( Ie542e , b/238790278 ) - При использовании
suspendCancellableCoroutineнеобходимо передавать отмены изCoroutineScopeвListenableFuture.
Версия 2.8.0-rc01
7 декабря 2022 г.
Выпущен репозиторий androidx.work:work-*:2.8.0-rc01 . Версия 2.8.0-rc01 содержит следующие коммиты.
Новые функции
- В этом релизе нет новых функций. В основном это просто обновление версии.
Версия 2.8.0-beta02
9 ноября 2022 г.
Выпущена библиотека androidx.work:work-*:2.8.0-beta02 . Версия 2.8.0-beta02 содержит следующие коммиты.
Исправлены ошибки
- Исправлен метод
equalsвWorkInfo, который ранее не учитывал информацию нового поколения. ( 4977cc )
Версия 2.8.0-beta01
5 октября 2022 г.
Выпущен репозиторий androidx.work:work-*:2.8.0-beta01 . Версия 2.8.0-beta01 содержит следующие коммиты.
Исправлены ошибки
- Исправлена ошибка в работе «жадного» планировщика, которая препятствовала немедленному запуску рабочих процессов при высокой нагрузке. ( I9686b , b/248111307 )
Версия 2.8.0-alpha04
7 сентября 2022 г.
Выпущен репозиторий androidx.work:work-*:2.8.0-alpha04 . Версия 2.8.0-alpha04 содержит следующие коммиты.
Изменения в API
- Добавлены
WorkerInfo.getGeneration()иWorkerParameters.getGeneration(), которые возвращают поколение рабочего процесса. У рабочего процесса может быть несколько поколений, если он был обновлен с помощьюWorkManager.updateWorkилиWorkManager.enqueueUniquePeriodicWorkс использованиемExistingPeriodicWorkPolicy.UPDATE. Обратите внимание, что если рабочий процесс в данный момент выполняется, этот метод может вернуть более новое поколение, чем у текущего выполняющегося рабочего процесса, если обновление произошло во время выполнения рабочего процесса. ( I665c5 , b/219446409 ) ( I128a9 , b/219446409 ) - Добавлен обработчик исключений
InitializationExceptionHandler, который можно использовать для определения наличия проблем при попытке инициализацииWorkManager. ( I061de )
Версия 2.8.0-alpha03
10 августа 2022 г.
Выпущен репозиторий androidx.work:work-*:2.8.0-alpha03 . Версия 2.8.0-alpha03 содержит следующие коммиты.
Новые функции
- Добавлена возможность неинвазивного обновления
WorkRequests, сохраняющая исходное время постановки в очередь, цепочку операций и т. д. Дополнительные сведения см. в методахWorkManager.updateWorkиExistingPeriodicWorkPolicy.UPDATE.
Изменения в API
-
WorkManager.updateWorkбыла добавлена для обновления задач с сохранением их исходного времени постановки в очередь и цепочки вызовов. ( I9a248 , b/219446409 ) - Добавлена политика
ExistingPeriodicWorkPolicy.UPDATE. Эта политика позволяет обновлять периодическое задание по имени. Она похожа на существующуюREPLACE, но менее интрузивна: она не отменяет выполнение задания, если оно в данный момент выполняется, и сохраняет время постановки в очередь — начальная задержка и период рассчитываются исходя из исходного времени постановки в очередь, а не из времени обновления.REPLACEбыла объявлена устаревшей, чтобы уменьшить путаницу между очень похожими по названиюREPLACEиUPDATE. Если вы все еще хотите сохранить предыдущую семантикуREPLACE, можно использовать недавно добавленнуюCANCEL_AND_REENQUEUE, которая идентичнаREPLACE. ( I985ed , b/219446409 ) - Добавьте возможность перехватывать исключения планирования, определив обработчик исключений
SchedulingExceptionHandler. ( I033eb ) - Встроенные вспомогательные функции для
OneTimeWorkRequestиPeriodicWorkRequestбыли перемещены изandroidx.work:work-runtime-ktxвandroidx.work:work-runtime( I0010f , b/209145335 )
Исправлены ошибки
- Добавлена аннотация
@RequiresPermissionк API, требующим предоставления разрешения POST_NOTIFICATIONS в SDK 33 и выше. ( Ie542e , b/238790278 )
Версия 2.8.0-alpha02
6 апреля 2022 г.
Выпущена библиотека androidx.work:work-*:2.8.0-alpha02 . Версия 2.8.0-alpha02 содержит следующие коммиты.
Изменения в API
- Теперь ограничения можно создавать напрямую, а не с помощью Builder, что удобно для пользователей Kotlin. ( Idc390 , b/137568653 )
- Добавлена возможность проверки инициализации
WorkManager. Также добавлен новый APIgetConfiguration()для разработчиков библиотек, позволяющий получить конфигурацию, с которой был инициализированWorkManager. ( I6eff3 , b/212300336 )
Версия 2.8.0-alpha01
12 января 2022 г.
Выпущен репозиторий androidx.work:work-*:2.8.0-alpha01 . Версия 2.8.0-alpha01 содержит следующие коммиты.
Изменения в API
- Для непосредственного создания WorkQuery были добавлены вспомогательные методы
WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTags. ( If48f2 , b/199919736 ) - Добавлены экспериментальные методы BuildCompat для будущих SDK ( Iafd82 , b/207528937 )
- Добавьте
getForegroundInfoвWorker. ( Ic1ead ) - Добавлены вспомогательные методы
WorkQuery.fromIdsдля создания WorkQuery непосредственно из идентификаторов. ( Ie5bdf , b/199919736 ) - В RxWorker теперь есть
setForegroundвозвращающийCompletable, который можно использовать вместоsetForegroundInfoAsync, возвращающегоListenableFuture. ( I85156 ) - В RxWorker для RxJava 2 теперь есть
getForegroundInfoвозвращающийSingle, который можно использовать вместоgetForegroundInfoAsync, возвращающегоListenableFuture. ( I21c91 , b/203851459 ) - В RxJava 3 класс RxWorker теперь имеет
getForegroundInfoвозвращающуюSingle, которую можно использовать вместоgetForegroundInfoAsync, возвращающейListenableFuture. ( I1ca8a ) - В RxWorker теперь есть
setForegroundвозвращающийCompletable, который можно использовать вместоsetForegroundInfoAsync, возвращающегоListenableFuture. ( I992a3 , b/203851459 )
Исправлены ошибки
- Передача отмен в
CoroutineScopeвListenableFutureпри использованииsuspendCancellableCoroutine. ( I77e63 )
Версия 2.7
Версия 2.7.1
17 ноября 2021 г.
Выпущена библиотека androidx.work:work-*:2.7.1 . Версия 2.7.1 содержит следующие коммиты.
Исправлены ошибки
- При использовании
suspendCancellableCoroutineотмены вCoroutineScopeраспространяются наListenableFuture. ( I77e63 ) - Исключение возникает немедленно, когда отложенные запросы на выполнение работ помечаются как ускоренные. bef1762
Версия 2.7.0
13 октября 2021 г.
Выпущена библиотека androidx.work:work-*:2.7.0 . Версия 2.7.0 содержит следующие коммиты.
Важные изменения по сравнению с версией 2.6.0
В Android 12 WorkManager представляет новый API
WorkRequest.Builder.setExpedited(...)помогающий справляться с ограничениями для служб переднего плана.При использовании
setExpedited(...)WorkManager делегирует выполнение ускоренным заданиям в JobScheduler, начиная с Android 12, обеспечивая при этом обратную совместимость с более ранними версиями Android за счет делегирования задач службе переднего плана.
Версия 2.7.0-rc01
29 сентября 2021 г.
Выпущен репозиторий androidx.work:work-*:2.7.0-rc01 . Версия 2.7.0-rc01 содержит следующие коммиты.
Эта версия идентична androidx.work:work-*:2.7.0-beta01 .
Версия 2.7.0-beta01
1 сентября 2021 г.
Выпущена библиотека androidx.work:work-*:2.7.0-beta01 . Версия 2.7.0-beta01 содержит следующие коммиты.
Новые функции
- Уменьшите конкуренцию за доступ к SQLite между несколькими процессами при инициализации WorkManager.
Изменения в API
- Удалите API-интерфейсы
@ExperimentalExpeditedWork, учитывая, что базовые платформенные API для Android 12 (S) стабильны. ( aosp/1792806 )
Исправлены ошибки
- Предоставьте более понятное сообщение об ошибке для ускоренных рабочих процессов, которые не реализуют
getForegroundInfoAsync(). ( aosp/1809376 )
Версия 2.7.0-alpha05
21 июля 2021 г.
Выпущена библиотека androidx.work:work-*:2.7.0-alpha05 . Версия 2.7.0-alpha05 содержит следующие коммиты.
В этом релизе также содержатся исправления ошибок из версии WorkManager 2.6.0-beta02 .
Версия 2.7.0-alpha04
2 июня 2021 г.
Выпущена версия androidx.work:work-*:2.7.0-alpha04 .
В этом релизе также содержатся изменения из версии 2.6.0-beta01 .
Изменения в API
-
ListenableWorker.setForegroundAsync()больше не является устаревшим. - Мы рекомендуем по возможности использовать API
WorkRequest.Builder.setExpedited(...). Для лучшей поддержки ситуаций, когда приложение не подчиняется ограничениям, связанным с работой служб переднего плана , разработчики могут использовать APIListenableWorker.setForegroundAsync(). - Если вызывается
ListenableWorker.setForegroundAsync(), и приложение подчиняется ограничениям, связанным с работой служб переднего плана, это вызовет исключение ForegroundServiceStartNotAllowedException .
Исправлены ошибки
- Когда срочные заказы переносятся на другое время, они перестают быть срочными и становятся обычными .
Версия 2.7.0-alpha03
21 апреля 2021 г.
Выпущена версия androidx.work:work-*:2.7.0-alpha03 . Версия 2.7.0-alpha03 содержит следующие коммиты.
Новые функции
Начиная с WorkManager
2.6.0-alpha02: Добавлена поддержка рабочих процессов, которые могут выполняться в любом процессе. ( Iaf200 )Начиная с WorkManager
2.6.0-alpha02: ДобавленRemoteCoroutineWorker, представляющий собой реализациюRemoteListenableWorker, который может привязываться к удалённому процессу. ( I30578 )
Изменения в API
- Начиная с WorkManager
2.6.0-alpha02: Добавлена поддержка сетевого ограниченияTEMPORARILY_UNMETERED. ( I08d5e ) - Начиная с WorkManager
2.6.0-alpha02: Поддержка многопроцессной обработки дляsetProgressAsync(). ( Ib6d08 ) - Начиная с WorkManager
2.6.0-alpha02: СделатьWorkManagerInitializerобщедоступным, чтобы другиеandroidx.startup.Initializerмогли использовать его в качестве зависимости. ( I5ab11 )
Версия 2.7.0-alpha02
10 марта 2021 г.
Выпущена библиотека androidx.work:work-*:2.7.0-alpha02 . Версия 2.7.0-alpha02 содержит следующие коммиты.
Исправлены ошибки
- Необходимо явно указать возможность изменения
PendingIntent, чтобы исправить ошибку, приводящую к сбою при работе с Android 12. ( b/180884673 )
Версия 2.7.0-alpha01
18 февраля 2021 г.
Выпущен репозиторий androidx.work:work-*:2.7.0-alpha01 . Версия 2.7.0-alpha01 содержит следующие коммиты.
Новые функции
В Android 12 WorkManager представляет новый API
WorkRequest.Builder.setExpedited(...), учитывающий ограничения служб переднего плана .Приложения больше не могут запускать службы переднего плана, находясь в фоновом режиме. Поэтому, чтобы лучше поддерживать длительные задачи, которые ранее были привязаны к жизненному циклу службы переднего плана, приложения могут помечать запросы
WorkRequestкак ускоренные .Этот API заменяет API
setForegroundAsync(...)/setForeground(...), которые теперь устарели .При использовании
setExpedited(...)WorkManager делегирует выполнение ускоренным заданиям вJobScheduler, начиная с Android 12, обеспечивая при этом обратную совместимость с более ранними версиями Android за счет делегирования задач службам переднего плана.
Изменения в API
- Добавить поддержку ускоренных запросов на
WorkRequest).
Версия 2.6.0
Версия 2.6.0
1 сентября 2021 г.
Выпущена библиотека androidx.work:work-*:2.6.0 . Версия 2.6.0 содержит следующие коммиты.
Важные изменения по сравнению с версией 2.5.0
Теперь WorkManager использует
androidx.startupдля инициализации. Если ранее вы использовалиtools:node="remove"ContentProvider, используемый для инициализации WorkManager, то вам следует сделать следующее.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider><!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />Добавлена поддержка рабочих процессов, которые могут запускаться в любом процессе. ( Iaf200 )
Добавлен
RemoteCoroutineWorker, представляющий собой реализацию RemoteListenableWorker, который может привязываться к удалённому процессу. ( I30578 )
Версия 2.6.0-rc01
4 августа 2021 г.
Выпущен репозиторий androidx.work:work-*:2.6.0-rc01 . Версия 2.6.0-rc01 содержит следующие коммиты.
Эта версия идентична androidx.work:work-*:2.6.0-beta02 .
Версия 2.6.0-beta02
21 июля 2021 г.
Выпущена библиотека androidx.work:work-*:2.6.0-beta02 . Версия 2.6.0-beta02 содержит следующие коммиты.
Исправлены ошибки
- Теперь
RemoteWorkManagerкорректно отключается отRemoteWorkManagerService, что позволяетRemoteWorkManagerServiceкорректно завершать работу. aosp/1730694 - Теперь
RemoteListenableWorkerкорректно отключается отRemoteWorkerService, что позволяетRemoteWorkerServiceкорректно завершать работу. aosp/1743817 -
ForceStopRunnableтеперь выполняется только в основном процессе приложения. Это оптимизация, позволяющая избежать конфликтов ресурсов для приложений, использующих несколько процессов. aosp/1749180 , aosp/1761729
Версия 2.6.0-beta01
2 июня 2021 г.
Выпущена версия androidx.work:work-*:2.6.0-beta01 . Версия 2.6.0-beta01 содержит следующие коммиты.
В этом релизе внесены некоторые незначительные улучшения в документацию. Релиз в значительной степени идентичен версии 2.6.0-alpha02 .
Версия 2.6.0-alpha02
21 апреля 2021 г.
Выпущен репозиторий androidx.work:work-*:2.6.0-alpha02 . Версия 2.6.0-alpha02 содержит следующие коммиты.
Новые функции
Добавляет поддержку рабочих процессов, которые могут выполняться в любом процессе. ( Iaf200 )
Добавлен
RemoteCoroutineWorker, представляющий собой реализациюRemoteListenableWorker, который может привязываться к удалённому процессу. ( I30578 )
Изменения в API
- Добавлена поддержка сетевого ограничения
TEMPORARILY_UNMETERED. ( I08d5e ) - Поддержка многопроцессной обработки для
setProgressAsync()( Ib6d08 ) - Сделайте
WorkManagerInitializerобщедоступным, чтобы другиеandroidx.startup.Initializerмогли использовать его в качестве зависимости. ( I5ab11 )
Версия 2.6.0-alpha01
24 марта 2021 г.
Выпущена версия androidx.work:work-*:2.6.0-alpha01 . Версия 2.6.0-alpha01 содержит следующие коммиты.
Новые функции
Теперь
WorkManagerиспользуетandroidx.startupдля инициализации. Ранее это делалось с помощьюandroidx.work.impl.WorkManagerInitializer. ( aosp/1608813 )Если ранее вы использовали
tools:node="remove"дляContentProvider, используемого для инициализации жизненного цикла процесса, то вместо этого вам необходимо сделать следующее.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(или)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Изменения в API
- Добавьте API-функцию
Result.getOutputData(), которая возвращаетoutputDataобъекта ListenableWorker. ( IE51e3 )
Исправлены ошибки
- Добавлено обходное решение для ошибки OEM-производителя, из-за которой при использовании API
AlarmManagerвозникает исключениеSecurityException. ( aosp/1587518 )
Версия 2.5.0
Версия 2.5.0
27 января 2021 г.
Выпущена библиотека androidx.work:work-*:2.5.0 . Версия 2.5.0 содержит следующие коммиты.
Значительные изменения по сравнению с версией 2.4.0
- Новый артефакт
:work:work-multiprocessдля приложений, использующих несколько процессов. Он обеспечивает повышение производительности за счет объединения планирования запросов на выполнение задач в один процесс.- Для использования
work-multiprocessнеобходимо определить зависимость от:implementation "androidx.work:work-multiprocess:2.5.0" - Укажите основной процесс, используя Configuration.Builder.setDefaultProcessName(String) .
- При использовании
work-multiprocessтакже рекомендуется использовать RemoteWorkManager для управления запросами наWorkRequest). RemoteWorkManager всегда обращается к указанному процессу. Планировщик задач внутри процесса также работает в указанном процессе.
- Для использования
- Sometimes,
ActivityManagercannot instantiate theJobServiceinstance, to start a job. This causes the underlying job to get silently dropped because of a platform bug.WorkManagernow ensures that there are backing jobs for every singleWorkRequestwhen anApplicationis being initialized by reconciling jobs. This greatly improves job execution reliability. ( b/172475041 , aosp/1489577 ) -
WorkManagerlimits database growth by reducing the buffer duration thatWorkRequests are tracked after aWorkRequestis complete. The duration was7days previously. It has been reduced to1day + the keepResultsForAtLeast duration. ( aosp/1419708 ) - The
TestListenableWorkerBuildernow supports the reified class extendingListenableWorkerto make testing easier. ( aosp/1443299 , b/169787349 ) - WorkManager inspector is now available when using Android Studio Arctic Fox.
Version 2.5.0-rc01
13 января 2021 г.
androidx.work:work-*:2.5.0-rc01 is released. Version 2.5.0-rc01 contains these commits.
Исправлены ошибки
- Fixed a bug where
getWorkInfosLiveDatawas not correctly getting invalidated after entities were updated when using theWorkQuerybased API. ( aosp/1540566 , b/173769028 ) - Fixed a bug where database transactions were not being marked as successful in some rare cases. This causes issues on some Motorola devices. ( aosp/1535368 , b/175944460 )
- Fixed a bug to ignore
NoSuchElementExceptions when trying to unbind from a dead process. ( aosp/1530589 ) - Improve
ConstraintTrackingWorkerto only stop aListenableWorkerif it's not already been stopped. ( aosp/1496844 , b/172946965 ) - Update androidx.work libraries to target Java 8 ( Ibd2f2 )
Version 2.5.0-beta02
2 декабря 2020 г.
androidx.work:work-*:2.5.0-beta02 is released. Version 2.5.0-beta02 contains these commits.
Исправлены ошибки
- Fixed a bug in
androidx.work:work-multiprocesswhere WorkManager inadvertently blocked the calling thread when trying to bind to the designated process. ( aosp/1475538 ) - Fixed a bug where
PeriodicWorkRequests were not being reconciled correctly. ( b/172475041 , aosp/1489577 ) - Added a workaround for a platform bug when stopping the foreground service when using the
setForeground*APIs. ( b/170924044 , aosp/1489901 )
Version 2.5.0-beta01
28 октября 2020 г.
androidx.work:work-*:2.5.0-beta01 is released. Version 2.5.0-beta01 contains these commits.
Новые функции
-
WorkManagerautomatically throttles the number ofWorkRequests that can be picked up by the in-process scheduler. The requests are still executed in FIFO order. ( aosp/1455228 ) -
WorkManagerattempts to recover when the application's datastore is in a bad state. ( aosp/1463103 )
Исправлены ошибки
- When
ListenableWorkers are interrupted, mark themENQUEUEDimmediately so they can be subsequently rescheduled. ( aosp/1455618 , b/170273988 )
Version 2.5.0-alpha03
14 октября 2020 г.
androidx.work:work-*:2.5.0-alpha03 is released. Version 2.5.0-alpha03 contains these commits.
Изменения в API
-
TestListenableWorkerBuilderandTestWorkerBuilderdo not use raw types. ( I883ad , b/169787349 )
Исправлены ошибки
- Use
ApplicationInfoto determine the name of the default app process. ( b/168716641 , aosp/1429950 ) - Fix the visibility rules for
RemoteWorkManagerandRemoteWorkContinuation. These APIs are no-longer marked as@Restricted. ( aosp/1432091 ) - Fix proguard rules for
:work:work-multiprocess. ( aosp/1432091 ) - Improve notification lifecycles for long running work bound to a foreground service. ( b/168502234 , aosp/1431331 )
Version 2.5.0-alpha02
16 сентября 2020 г.
androidx.work:work-*:2.5.0-alpha02 is released. Version 2.5.0-alpha02 contains these commits.
Новые функции
- Add an API to WorkQuery to be able to use
ids to queryWorkInfos. ( aosp/1412372 , b/157335295 ) - WorkManager better supports apps that use multiple processes with a new artifact (
androidx.work:work-multiprocess:*). This new artifact helps solve a few problems that large apps encounter including:- WorkManager typically needs to be initialized in every app process. This is not great because there is increased SQLite contention which in turn causes other problems. WorkManager now has new APIs which can be used to designate a primary app process using
Configuration#setDefaultProcessName(processName). TheprocessNameis a fully qualified process name which looks likepackageName:processName(egcom.example:remote). - A set of new APIs:
RemoteWorkManagerandRemoteWorkContinuationtoenqueue,cancelandquerywork requests. These APIs do not includeLiveDatavariants to avoid SQLite contention across multiple-processes. All calls toenqueue,cancelandqueryare forwarded to aprimaryapp process using AIDL and return a fluentListenableFuture. ( aosp/1392657 , aosp/1411210 , aosp/1412215 , aosp/1417713 )
- WorkManager typically needs to be initialized in every app process. This is not great because there is increased SQLite contention which in turn causes other problems. WorkManager now has new APIs which can be used to designate a primary app process using
Изменения в API
- WorkManager now prunes completed
WorkRequests that have no incomplete dependencies more aggressively. The buffer duration changed from7days to1day. ( aosp/1419708 )
Исправлены ошибки
- WorkManager now reconciles jobs proactively so
WorkRequests andJobSchedulerjobs are in sync whenWorkManageris initialized. ( aosp/1412794 , b/166292069 )
Version 2.5.0-alpha01
19 августа 2020 г.
androidx.work:work-*:2.5.0-alpha01 is released. Version 2.5.0-alpha01 contains these commits.
Новые функции
- Changes to internal APIs that allow us to provide better tooling with
WorkManagergoing forward. Stay tuned for additional updates.
Исправлены ошибки
- Handle
SecurityExceptions when tracking network state on some devices. ( aosp/1396969 )
Внешний вклад
- Fix documentation for
ArrayCreatingInputMergerby Zac Sweers ( github/43 ).
Версия 2.4.0
Версия 2.4.0
22 июля 2020 г.
androidx.work:work-*:2.4.0 is released. Version 2.4.0 contains these commits.
Major changes since 2.3.0
-
WorkManagers in-process scheduler is now more capable. Previously, the in-processSchedulerwould only consider executing work that was not delayed and whose constraints were met. Now, the in-process scheduler tracksWorkRequests which might be executed in the future, including PeriodicWorkRequests. The in-processScheduleralso does not observe scheduling limits (but is still restricted to the size of theExecutorbeing used by WorkManager). This means that the application can now execute a lot more WorkRequests when the app is in the foreground. To manage execution of delayed work in the foreground,WorkManageralso introduces a new configurableRunnableScheduler. ( aosp/1185778 ) - WorkManager now supports RxJava 3. To use RxJava 3, you should include the following dependency:
implementation "androidx.work:work-rxjava3:2.4.0". ( aosp/1277904 ) - Added the ability to query for
WorkInfos by using aWorkQuery. This is useful when developers want to queryWorkInfos by a combination of multiple attributes. For more information look atWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)orWorkQuery.Builder.fromUniqueWorkNames(...). ( aosp/1253230 , b/143847546 ) Add the ability to request diagnostic information from
WorkManagerusing:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"This provides a lot of useful information including:
- WorkRequests that were completed in the last 24 hours.
- WorkRequests that are currently RUNNING.
- Scheduled WorkRequests. ( aosp/1235501 )
Add
ExistingWorkPolicy.APPEND_OR_REPLACEwhich is similar toAPPEND, but replaces a chain that has cancelled or failed prerequisites. ( b/134613984 , aosp/1199640 )Provide the ability to add a custom
RunnableSchedulerto track WorkRequests that need to be executed in the future. This is used by the in-process Scheduler. ( aosp/1203944 )Add support for dynamically adding factories to delegate to, when using a
DelegatingWorkerFactory. ( b/156289105 , aosp/1309745 )Align tracking for
BATTERY_NOT_LOWconstraints more closely with the platform. ( aosp/1312583 )The in-process scheduler now uses better APIs to determine the name of the process. This is useful to better support apps that use multiple-processes. ( aosp/1324732 )
New Lint rules which enforce:
- Use of the right
foregroundServiceTypewhen usingsetForegroundAsync()APIs. ( b/147873061 , aosp/1215915 ) - Specifying JobScheduler ids that WorkManager should use when using JobService APIs directly. aosp/1223567
- Added a new lint rule that ensures that
ListenableWorkerimplementations are nowpublicwhen using the defaultWorkerFactory. ( aosp/1291262 )
- Use of the right
Calls to
setForegroundAsync()that do not complete before completion of aListenableWorkerwill now be signalled via anIllegalStateExceptionon the returnedListenableFuture. ( aosp/1262743 )Fix a bug where the
ForegroundServiceis not stopped after a foregroundWorkeris interrupted. ( b/155579898 , aosp/1302153 )Fix a bug where
WorkManagerattempts to execute multiple instances of aWorkerbound to a Foreground Service ( b/156310133 , aosp/1309853 )
Version 2.4.0-rc01
24 июня 2020 г.
androidx.work:work-*:2.4.0-rc01 is released. Version 2.4.0-rc01 contains these commits.
Исправлены ошибки
- The in-process scheduler now uses better APIs to determine the name of the process. This is useful to better support apps that use multiple-processes. ( aosp/1324732 )
Version 2.4.0-beta01
May 20, 2020
androidx.work:work-gcm:2.4.0-beta01 , androidx.work:work-runtime:2.4.0-beta01 , androidx.work:work-runtime-ktx:2.4.0-beta01 , androidx.work:work-rxjava2:2.4.0-beta01 , and androidx.work:work-testing:2.4.0-beta01 are released. Version 2.4.0-beta01 contains these commits.
Исправлены ошибки
- Fix a bug where the
ForegroundServiceis not stopped after a foregroundWorkeris interrupted. ( b/155579898 , aosp/1302153 ) - Fix a bug where
WorkManagerattempts to execute multiple instances of aWorkerbound to a Foreground Service ( b/156310133 , aosp/1309853 ) - Add support for dynamically adding factories to delegate to, when using a
DelegatingWorkerFactory. ( b/156289105 , aosp/1309745 ) - Align tracking for
BATTERY_NOT_LOWconstraints more closely with the platform. ( aosp/1312583 )
Version 2.4.0-alpha03
29 апреля 2020 г.
androidx.work:work-*:2.4.0-alpha03 is released. Version 2.4.0-alpha03 contains these commits.
Новые функции
- WorkManager now supports RxJava 3. To use RxJava 3, you should include the following dependency:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03". ( aosp/1277904 ) - Added a new lint rule that ensures that
ListenableWorkerimplementations are nowpublicwhen using the defaultWorkerFactory. ( aosp/1291262 )
Изменения в API
- Calling
setProgressAsync()after aListenableWorkerhas finished execution will now signal anExceptionvia theListenableFuture. ( aosp/1285494 ) -
WorkQuery.Builderis now markedfinal. ( aosp/1275037 ) -
WorkQuery.Builderfactory methodswithStates,withTagsandwithUniqueWorkNameshave been renamed tofromStates,fromTagsandfromUniqueWorkNamesrespectively. ( aosp/1280287 )
Исправлены ошибки
- Ignore
SecurityExceptions when tracking network state of a device. ( b/153246136 , aosp/1280813 )
Version 2.4.0-alpha02
1 апреля 2020 г.
androidx.work:work-*:2.4.0-alpha02 is released. Version 2.4.0-alpha02 contains these commits.
Новые функции
- Added a new Lint rule that warns when
WorkRequests requires bothConstraints.setRequiresCharging(...)andConstraints.setRequiresDeviceIdle(...). Some devices are never charging and idle at the same time. So such requests would run less frequently than expected. ( aosp/1253840 )
Изменения в API
Added the ability to query for
WorkInfos by using aWorkQuery. This is useful when developers want to queryWorkInfos by a combination of multiple attributes. For more information look atWorkQuery.Builder withStates(...),WorkQuery.Builder withTags(...)orWorkQuery.Builder withUniqueWorkNames(...). ( aosp/1253230 , b/143847546 )Calls to
setForegroundAsync()that do not complete before completion of aListenableWorkerwill now be signalled via anIllegalStateExceptionon the returnedListenableFuture. ( aosp/1262743 )
Исправлены ошибки
- Fixed the lint rule that checks for invalid interval durations for
PeriodicWorkRequests. ( aosp/1254846 , b/152606442 )
Version 2.4.0-alpha01
4 марта 2020 г.
androidx.work:work-*:2.4.0-alpha01 is released. Version 2.4.0-alpha01 contains these commits.
Новые функции
WorkManagers in-process scheduler is now more capable. Previously, the in-process Scheduler would only consider executing work that was not delayed and whose constraints were met. Now, the in-process scheduler tracksWorkRequests which might be executed in the future, includingPeriodicWorkRequests. The in-process Scheduler also does not observe scheduling limits (but is still restricted to the size of theExecutorbeing used by WorkManager). This means that the application can now execute a lot moreWorkRequests when the app is in the foreground. ( aosp/1185778 )Added the ability to request diagnostic information from WorkManager using
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". This provides a lot of useful information including:- WorkRequests that were completed in the last 24 hours.
- WorkRequests that are currently RUNNING.
- Scheduled WorkRequests. ( aosp/1235501 )
New Lint rules which enforce:
- Use of the right
foregroundServiceTypewhen usingsetForegroundAsync()APIs. ( b/147873061 , aosp/1215915 ) - Specifying
JobSchedulerids thatWorkManagershould use when usingJobServiceAPIs directly. ( aosp/1223567 )
- Use of the right
Изменения в API
Add
ExistingWorkPolicy.APPEND_OR_REPLACEwhich is similar toAPPEND, but replaces a chain that has cancelled or failed prerequisites. ( b/134613984 , aosp/1199640 )Provide the ability to add a custom
RunnableSchedulerto trackWorkRequests that need to be executed in the future. This is used by the in-process Scheduler. ( aosp/1203944 )
Исправлены ошибки
- Deprecated
setProgress()inRxWorkerbecause it previously returned aSingle<Void>which is an impossible type. Added a new APIsetCompletableProgress()which returns aCompletableinstead; and added new Lint rules which help migrate to the new APIs. ( b/150080946 , aosp/1242665 )
Версия 2.3.4
Версия 2.3.4
18 марта 2020 г.
androidx.work:work-*:2.3.4 is released. Version 2.3.4 contains these commits.
Исправлены ошибки
- Fixed a bug which would cause multiple instances of a long running
Workers to run, after exceeding the 10 minute execution window. ( aosp/1247484 , b/150553353 ) - Fix for WorkManager's lint
IssueRegistry. Thank you @ZacSweers from Slack, for the contribution. ( aosp/1217923 )
Версия 2.3.3
Версия 2.3.3
4 марта 2020 г.
androidx.work:work-*:2.3.3 is released. Version 2.3.3 contains these commits.
Исправлены ошибки
- Fixed a bug where if a
Workerwas interrupted, it would not get rescheduled correctly. ( b/150325687 , aosp/1246571 )
Версия 2.3.2
Версия 2.3.2
19 февраля 2020 г.
androidx.work:work-*:2.3.2 are released. Version 2.3.2 contains these commits.
Исправлены ошибки
- Fixes an issue where WorkManager exceeds the 100 job limit in JobScheduler in rare cases. ( aosp/1226859 , b/149092520 )
- Fix for a race condition in ConstraintControllers. ( aosp/1220100 )
- Improved the management foreground Service lifecycle for long running Workers. ( aosp/1226295 )
- Improved the management of cancellation of Notifications for long running Workers upon Worker cancellation. ( aosp/1228346 )
Версия 2.3.1
Версия 2.3.1
5 февраля 2020 г.
androidx.work:work-*:2.3.1 is released. Version 2.3.1 contains these commits .
Исправлены ошибки
- Better manage the lifecycle of
Notifications for long runningWorkers that run when a foregroundServiceis active. ( aosp/1218539 , b/147249312 ) -
WorkManagernow depends onandroidx.sqlite:sqlite-framework:2.1.0stable. ( aosp/1217729 ) - Added lint rules to ensure that a
foregroundServiceTypeis specified in theAndroidManifest.xmlwhen usingforegroundServiceTypes inForegroundInfo. ( aosp/1214207 , b/147873061 )
Версия 2.3.0
Версия 2.3.0
22 января 2020 г.
androidx.work:work-*:2.3.0 is released with no changes since 2.3.0-rc01 . Version 2.3.0 contains these commits .
Important changes since 2.2.0
- Support for long running or important work via
ListenableWorker#setForegroundAsync(). - Support for Worker Progress via
ListenableWorker#setProgressAsync(). - WorkManager now packages additional lint rules as part of the library which helps catch bugs early.
Version 2.3.0-rc01
8 января 2020 г.
androidx.work:work-*:2.3.0-rc01 is released. Version 2.3.0-rc01 contains these commits .
This release is identical to 2.3.0-beta02
Исправлены ошибки
- The
work-testingartifact now defines anapidependency onwork-runtime-ktx. ( aosp/1194410 )
Version 2.3.0-beta02
18 декабря 2019 г.
androidx.work:work-*:2.3.0-beta02 is released. Version 2.3.0-beta02 contains these commits .
Новые функции
- Added a better error message for non-recoverable SQLite exceptions. ( aosp/1185777 )
- Added a lint rule which ensures that the content provider
androidx.work.impl.WorkManagerInitializeris removed from theAndroidManifest.xmlwhen using on demand initialization. ( aosp/1167007 ) - Added a lint warning when
enqueue()is used for aPeriodicWorkRequestinstead ofenqueueUniquePeriodicWork(). ( aosp/1166032 )
API changes
-
ForegroundInfonow requires you to specify thenotificationIdto be used when usingListenableWorker.setForegroundAsync(). This is a breaking change. This allows you to run multiple long runningWorkers in parallel.WorkManageralso better manages lifetimes of the providedNotifications. ( b/145473554 , aosp/1181208 , asop/1181216 , asop/1183577 )
Исправлены ошибки
- Fixed a bug in the AlarmManager implementation where alarms were not being cleaned up correctly. ( aosp/1156444 )
- Fixed a bug where an empty list of
WorkRequests would cause an incorrectWorkContinuationchain to be built. ( b/142835274 , aosp/1157051 )
Dependency changes
- WorkManager now uses Room 2.2.2.
Version 2.3.0-beta01
20 ноября 2019 г.
androidx.work:work-*:2.3.0-beta01 is released. Version 2.3.0-beta01 contains these commits .
Новые функции
- Added a new lint rule which prevents developer errors due to incorrect implementation of
androidx.work.Configuration.Providerwhen using on-demand initialization. aosp/1164559
Version 2.3.0-alpha03
23 октября 2019 г.
androidx.work:work-*:2.3.0-alpha03 is released. Version 2.3.0-alpha03 contains these commits .
Новые функции
- Added
WorkManager.createCancelPendingIntent()API which makes it easy to cancelWorkRequests without having to register another component in theAndroidManifest.xml. This API makes it especially easy to cancelWorkRequests fromNotifications. We expect this to be paired with the new foreground APIs in 2.3.0. - WorkManager now depends on
androidx.room:*:2.2.0stable.
API changes
- Renamed
ForegroundInfo.getNotificationType()toForegroundInfo.getForegroundServiceType()to be more consistent with the underlying platform APIs. ( b/142729893 , aosp/1143316 )
Исправлены ошибки
- Fixed a bug which is caused by an unnecessary call to
setTransactionSuccessful()outside of a transaction. This happens for rare migrations. ( b/142580433 , aosp/1141737 )
Version 2.3.0-alpha02
9 октября 2019 г.
androidx.work:work-*:2.3.0-alpha02 is released. Version 2.3.0-alpha02 contains these commits .
Новые функции
- WorkManager now supports running long running or important work that should be kept alive by the OS. For more information look at
ListenableWorker#setForegroundAsync()(orCoroutineWorker#setForeground()for Kotlin). ( aosp/1133636 )
API changes
- The
containsKeyAPI inDatais renamed tohasKeyWithValueOfType. The corresponding extension method in thektxlibrary has also been renamed. ( b/141916545 )
Исправлены ошибки
- WorkManager schedules work fairly when the number of
WorkRequests enqueued approach scheduling limits . ( aosp/1105766 ) - WorkManager calls
ListenableWorker#onStopped()only if the work is not already completed. ( b/140055777 ) - WorkManager now removes progress information when a worker gets interrupted or reaches its terminal state. ( aosp/1114572 )
-
Datanow has a much more usefultoString()representation. ( b/140945323 ) -
Datanow has a betterequals()method. It also supportsdeepEqualsforArraytypes. ( b/140922528 ) - WorkManager now stores its internal database and preference files in a no backup directory. ( b/114808216 )
Версия 2.3.0-alpha01
22 августа 2019 г.
androidx.work:work-*:2.3.September 5, 20190-alpha01 is released. The commits included in this version can be found here .
Новые функции
-
ListenableWorkers can now set progress via thesetProgressAsync()API. Also added a correspondingsuspend-ingsetProgressAPI inCoroutineWorkerand asetProgressinRxWorkerwhich returns aSingle<Void>. With these new APIs Workers can convey progress information viaWorkInfowhich has a correspondinggetProgressAPI. ( b/79481554 ) -
Datahas acontainsKey()API which can be used to validate that input data toWorkers has keys with the expected type. ( b/117136838 ) -
Datacan now be serialized usingData.toByteArray()andData.fromByteArray(). Note that there are no versioning guarantees withDataso you should not persist it or use it for IPC between applications. They are only safe to be used between multiple processes of the same application. - Added the ability to specify an
InputMergerFactoryviaConfiguration.setInputMergerFactory. ( b/133273159 )
API changes
- WorkManager will throw an instance of
IllegalStateExceptionif aWorkerFactoryreturns an instance ofListenableWorkerwhich has been previously invoked. ( b/139554406 ) - Documentation updates around
ListenableFuturecancellation and theonStopped()callback inListenableWorker. ( b/138413671 )
Исправлены ошибки
- The in-process Scheduler now ignores
WorkRequests with theidleconstraint. These requests are now only picked up byJobSchedulerwhen the device is actuallyidle. ( aosp/1089779 ) -
TestSchedulernow correctly uses the specifiedExecutorfor its internal task executor in tests. ( aosp/1090749 )
Версия 2.2.0
Версия 2.2.0
15 августа 2019 г.
androidx.work:work-*:2.2.0 is released. The commits included in this version can be found here .
This release is identical to androidx.work:work-*:2.2.0-rc01 .
Important Changes in 2.2.0 from 2.1.0
androidx.work:work-gcm:2.2.0 is a new Maven artifact which supports the use of GCMNetworkManager as a scheduler when Google Play Services is available for API levels <= 22. This is an optional dependency that helps with more reliable and performant background processing on older API versions. If your app uses Google Play Services, add this dependency to your gradle file to automatically get GCMNetworkManager support. If Play Services is not available, WorkManager will continue to fall back to AlarmManager on older devices.
Version 2.2.0-rc01
30 июля 2019 г.
androidx.work:work-*:2.2.0-rc01 is released. The commits included in this version can be found here .
Исправлены ошибки
- Fixed a bug in the AlarmManager implementation that causes the Service to shutdown prematurely and resulting in a
RejectedExecutionExceptionin rare cases. ( aosp/1092374 ) ( b/138238197 ). - Added a workaround for a
NullPointerExceptionwhen usingJobSchedulerAPIs on some devices. ( aosp/1091020 ) ( b/138364061 ), ( b/138441699 )
Version 2.2.0-beta02
19 июля 2019 г.
androidx.work:work-*:2.2.0-beta02 is released. The commits included in this version can be found here .
Исправлены ошибки
- Removed unintentional jacoco dependency that was introduced in
2.2.0-beta01.
Version 2.2.0-beta01
17 июля 2019 г.
androidx.work:work-*:2.2.0-beta01 is released. The commits included in this version can be found here .
Новые функции
-
androidx.work:work-gcm:2.2.0-beta01is a new Maven artifact which supports the use of GCMNetworkManager as a scheduler when Google Play Services is available for API levels <= 22. This is an optional dependency that helps with more reliable and performant background processing on older API versions. If your app uses Google Play Services, add this dependency to your gradle file to automatically get GCMNetworkManager support. If Play Services is not available, WorkManager will continue to fall back to AlarmManager on older devices.
Исправлены ошибки
- Fix for
IllegalArgumentExceptionwhen tracking network state on Nvidia Shield K1 tablets. ( aosp/1010188 )
Версия 2.1.0
Версия 2.1.0
11 июля 2019 г.
androidx.work:work-*:2.1.0 is released. This release is identical to androidx.work:work-*:2.1.0-rc01 .
Important changes since 2.0.1
-
work-runtime-ktxnow requires Java 8. If you run into any issues, you can add the following to yourbuild.gradle:kotlinOptions { jvmTarget = "1.8" } - Added on-demand initialization for WorkManager, which will create WorkManager only when referenced. b/127497100 To set up your project for on-demand initialization:
- Disable the automatic initializer .
- Implement
Configuration.Provideron your customApplicationobject. - Change all references of
WorkManager.getInstance()toWorkManager.getInstance(Context). As part of this change, we have deprecatedWorkManager.getInstance(). It is always safer to call the newWorkManager.getInstance(Context)replacement, even if you're not doing on-demand initialization.
-
PeriodicWorkRequests now support initial delays. You can use thesetInitialDelaymethod onPeriodicWorkRequest.Builderto set an initial delay. b/111404867 - Added the ability to delegate to one or more registered
WorkerFactorys usingDelegatingWorkerFactory. b/131435993 - Added the ability to customize the
Executorused by WorkManager for all its internal book-keeping viaConfiguration.Builder.setTaskExecutor. - Added the ability to create unit testable
WorkerandListenableWorkerclasses by usingTestWorkerBuilderandTestListenableWorkerBuilderin thework-testingartifact.- Note that
work-testingnow pulls in Kotlin as a dependency and includes several Kotlin extensions by default.
- Note that
- Added run attempt count to
WorkInfo. b/127290461 -
Datatypes can now store and retrieve bytes and byte arrays. This does NOT change the maximum size ofDataobjects. - WorkManager now depends on
Room 2.1.0, which should fix some database issues.
Version 2.1.0-rc01
27 июня 2019 г.
androidx.work:work-*:2.1.0-rc01 is released. The commits included in this version can be found here .
Исправлены ошибки
- Fixed a bug which would cause an application to crash when executing jobs with
JobSchedulerwhile a backup was in progress b/135858602 .
Version 2.1.0-beta02
June 20, 2019
androidx.work:work-*:2.1.0-beta02 is released. The commits included in this version can be found here .
Исправлены ошибки
-
TestListenableWorkerBuildernow uses the correctWorkerFactorywhen creating instances ofListenableWorker. b/135275844 - Fixed a bug which caused drifts in the execution windows for
WorkRequests due to process death. b/135272196
Версия 2.1.0-beta01
13 июня 2019 г.
androidx.work:work-*:2.1.0-beta01 is released. The commits included in this version can be found here .
Исправлены ошибки
- WorkManager now depends on
Room 2.1.0, which should fix some database issues. - Removed some startup disk I/O on the main thread.
- Fixed a potential deadlock in constraint tracking. b/134361006
- Preemptively cancelled invalid jobs attributed to WorkManager. b/134058261
- Added some defensive calls to JobScheduler APIs for misbehaving devices.
Version 2.1.0-alpha03
5 июня 2019 г.
androidx.work:*:2.1.0-alpha03 is released.
Исправлены ошибки
- Improved documentation for
PeriodicWorkRequests. -
WorkManagerTestInitHelpernow uses the correct background executor for tests. - Fixes for SQLite issues when dealing with large transactions on some devices. ( b/130182503 )
- WorkManager's dependencies are now more granular. ( b/133169148 ).
- Workaround OEM specific bugs in the implementation of
JobSchedulerwhen scheduling jobs using WorkManager. - Improvements in the AlarmManager based scheduler around service lifetimes that previously caused rare crashes. ( b/133313734 )
Версия 2.1.0-alpha02
16 мая 2019 г.
WorkManager 2.1.0-alpha02 is released. This version contains several new APIs.
Изменения в API
PeriodicWorkRequests now support initial delays. You can use thesetInitialDelaymethod onPeriodicWorkRequest.Builderto set an initial delay. b/111404867Added the ability to delegate to one or more registered
WorkerFactorys usingDelegatingWorkerFactory. b/131435993Added the ability to customize the
Executorused by WorkManager for all its internal book-keeping viaConfiguration.Builder.setTaskExecutor.Improved documentation around
WorkRequest.keepResultsForAtLeast( b/130638001 ), on-demand initialization, andPeriodicWorkRequest.Builder( b/131711394 ).
Version 2.1.0-alpha01
24 апреля 2019 г.
WorkManager 2.1.0-alpha01 is released. This version contains several new APIs. Please note that starting with this version, there will be new features that won't get backported to the 1.x release. We recommend switching to 2.x.
Изменения в API
- Added on-demand initialization for WorkManager, which will create WorkManager only when referenced. b/127497100 To set up your project for on-demand initialization:
- Disable the automatic initializer .
- Implement
Configuration.Provideron your customApplicationobject. - Change all references of
WorkManager.getInstance()toWorkManager.getInstance(Context). As part of this change, we have deprecatedWorkManager.getInstance(). It is always safer to call the newWorkManager.getInstance(Context)replacement, even if you're not doing on-demand initialization.
- Added the ability to create unit testable
WorkerandListenableWorkerclasses by usingTestWorkerBuilderandTestListenableWorkerBuilderin thework-testingartifact.- Note that
work-testingnow pulls in Kotlin as a dependency, but also includes several Kotlin extensions by default.
- Note that
- Added run attempt count to
WorkInfo. b/127290461 -
Datatypes can now store and retrieve bytes and byte arrays. This does NOT change the maximum size ofDataobjects. - Deprecated
CoroutineWorker.coroutineContext. This field was incorrectly typed as aCoroutineDispatcher; you should no longer need it as you can go to the desired coroutineContext yourself in the body of the suspending function. -
RxWorker.createWork()andRxWorker.getBackgroundScheduler()are now annotated with@NonNullreturn types.
Версия 2.0.1
Версия 2.0.1
9 апреля 2019 г.
WorkManager 2.0.1 is released. This release is identical to 2.0.1-rc01 .
Version 2.0.1-rc01
3 апреля 2019 г.
WorkManager 2.0.1-rc01 is released. This version contains some bug fixes. For legacy 1.x users, some of these changes also appear in 1.0.1-rc01 .
Исправлены ошибки
- Robolectric tests now operate properly with WorkManager. b/122553577
- Fixed an edge case crash with constraints tracking not being cleaned up on pre-JobScheduler APIs. b/129226383
- Fixed a
StackOverflowErrordealing with long chains of work. b/129091233 - Updated documentation for
PeriodicWorkRequests to indicate that flex time is not supported on API 23. - Fixed some broken links in the Kotlin documentation.
Версия 2.0.0
Версия 2.0.0
20 марта 2019 г.
WorkManager 2.0.0 is released. This version is identical to 2.0.0-rc01 and is the AndroidX version of 1.0.0 stable with AndroidX dependencies. We recommend targeting this version instead of the legacy 1.x versions. All active development will target 2.x and 1.x will only receive critical bug fixes for a limited time.
Версия 2.0.0-rc01
7 марта 2019 г.
WorkManager 2.0.0-rc01 is released. This version is identical to 1.0.0 stable but has AndroidX dependencies. Once this reaches 2.0.0 stable, you should include this version and the legacy 1.x versions will only receive some critical bug fixes. All active development will target 2.x.
Pre-AndroidX Dependencies
Reference docs: Java
Классный
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
Версия 1.0.1
Версия 1.0.1
9 апреля 2019 г.
WorkManager 1.0.1 is released. This release is identical to 1.0.1-rc01 .
Please note that we strongly encourage users to update to WorkManager 2.x, as there will be very few updates to the 1.x branch moving forward. New APIs will also not be released for the 1.x library.
Version 1.0.1-rc01
2 апреля 2019 г.
WorkManager 1.0.1-rc01 is released. This version contains some bug fixes.
Исправлены ошибки
- Robolectric tests now operate properly with WorkManager. b/122553577
- Fixed an edge case crash with constraints tracking not being cleaned up on pre-JobScheduler APIs. b/129226383
- Fixed a
StackOverflowErrordealing with long chains of work. b/129091233
Версия 1.0.0
Версия 1.0.0
March 05, 2019
This is WorkManager's 1.0.0 stable release. This version of WorkManager is identical to 1.0.0-rc02.
Версия 1.0.0-rc02
21 февраля 2019 г.
This is the second release candidate for WorkManager's 1.0.0 stable release. This release contains two bug fixes.
Исправлены ошибки
Workers are now correctly scheduled after an application crash. b/124546316Workers that throw an uncheckedExceptionare now correctly marked asFAILEDand no longer crash the app process.
Версия 1.0.0-rc01
14 февраля 2019 г.
This is a release candidate for WorkManager's 1.0.0 stable release. This release contains one bug fix.
Исправлены ошибки
- The AlarmManager based implementation now correctly respects
flexwindows for PeriodicWorkRequests. b/124274584
Version 1.0.0-beta05
6 февраля 2019 г.
This release contains some bug fixes.
Исправлены ошибки
- Fixed a case where
JobScheduler.getPendingJob(...)was used on API 23. b/123893059 - Fixed a
NullPointerExceptionon devices running Android 5.1 (API level 22) or lower. b/123835104
Версия 1.0.0-beta04
4 февраля 2019 г.
This release contains some bug fixes.
Исправлены ошибки
- Improved scheduling of PeriodicWork for the AlarmManager based implementation.
- Fixed a case where WorkManager failed to correctly track constraints when using the AlarmManager based implementation. b/123379508
- Fixed a case when WorkManager failed to retry work on process death when using the AlarmManager based implementation. b/123329850
- Fixed a case which would cause WorkManager to leak Wakelocks when using the AlarmManager based implementation.
Версия 1.0.0-beta03
25 января 2019 г.
This release contains some bug fixes.
Исправлены ошибки
- We introduced a regression
1.0.0-beta02that was causing work to not execute properly in some situations. b/123211993 - Fixed a case where work wasn't properly honoring backoff timing. b/122881597
- Fixed a
ConcurrentModificationExceptionon devices running Android 5.1 (API or) or lower. This is a continuation of the fix in1.0.0-beta02. b/121345393 - Added
exported=falsefor some components in our manifest that were missing this annotation. - Included information about how WorkManager interacts with the OS in the package-level documentation.
Версия 1.0.0-beta02
January 15, 2019
This release contains some bug fixes.
Исправлены ошибки
- Fixed an edge case where periodic work could run more than once per interval on devices running Android 6.0 (API level 23). b/121998363
- Fixed a
ConcurrentModificationExceptionon devices running Android 5.1 (API level 22) or lower. b/121345393 - Fixed erroneous execution of work when Constraints aren't met on devices running Android 5.1 (API level 22) or lower. b/122578012
- Optimized work completion handling to be faster in some edge cases. b/122358129
- Added a change to address potential race conditions among multiple instances of
LiveDatathat WorkManager uses. - Moved to use
Roomdependency1.1.1instead of1.1.1-rc01; these versions are identical. b/122578011
Версия 1.0.0-beta01
19 декабря 2018 г.
This release contains no API changes; moving forward, WorkManager is expected to stay API stable until the next version unless there is a critical problem. This release contains some bug fixes.
Исправлены ошибки
- Previously-cancelled children of successfully completed parent work will no longer run. b/120811767
- Properly initialized logging classes (primarily surfaced during tests).
Version 1.0.0-alpha13
12 декабря 2018 г.
This release contains a minor API change that will be helpful for some Kotlin users.
Изменения в API
-
androidx.work.Resulthas been moved to be an inner class ofListenableWorker. This prevents refactoring conflicts with Kotlin's top-levelResultclass. This is a breaking API change. b/120564418
Breaking API Changes
-
androidx.work.Resulthas been moved to be an inner class ofListenableWorker.
Версия 1.0.0-alpha12
December 5, 2018
This release contains some breaking API changes; please see the Breaking API Changes section below. This version is likely to be released as our first beta. alpha12 also contains extensive documentation updates.
Изменения в API
- A new artifact,
work-rxjava2, introducesRxWorker. This is aListenableWorkerthat expects aSingle<Payload>. - Support for Firebase JobDispatcher has been removed because of its impending deprecation. This means that the
work-firebaseartifact will no longer be updated as we head into beta. We will be looking into adding an alternative in the future. - Combined
PayloadintoResult.Resultis now a "sealed class" with three concrete implementations, which you can obtain viaResult.success()(orResult.success(Data)),Result.failure()(orResult.failure(Data)), andResult.retry(). YourListenableFutures now resultResultinstead ofPayload.Workers don't have getter and setter methods for outputData. This is a breaking change. - Added
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)andConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)and variants to better support slow triggering content URIs. b/119919774 - Added
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)variant. This method requires API 26. - Added
Operation.await()andListenableFuture.await()Kotlin extension methods. - Renamed
Operation.getException()toOperation.getThrowable(). This is a breaking change. - The
ContentUriTriggersclass and methods referencing it are no longer available for public usage. This is a breaking change. - Removed the rest of the varargs methods in
WorkManager,WorkContinuation, andOneTimeWorkRequestto streamline the API. To fix any build problems, you can wrap your existing varargs withArrays.asList(...). We still include single-argument versions of each method. This is a breaking change. - Removed
WorkContinuation.combine(OneTimeWorkRequest, *)variants. They were presenting a confusing API; the existingcombinemethods are more understandable. This is a breaking change.
Исправлены ошибки
- Pre-Marshmallow implementations are now more reliable in recovering from process death of an already-executing task.
-
LiveDatathat is observed viaobserveForeveris tracked via WorkManager. This is a backport of a Room library fix. b/74477406 -
Data.Builder.build()now throws an exception if the serialized object exceeds its maximum size. This previously would only happen on a background thread where you couldn't properly handle it. - Further distinguished stopped vs. cancelled work;
getWorkInfoById()will return aWorkInfowith theCANCELLEDStateduringListenableWorker.onStopped(). - Treat
nullResults as failures inListenableWorker. b/120362353 - Speculative fix for Shield Tablets running API 24 that sometimes threw an
IllegalArgumentException. b/119484416
Breaking API Changes
- Support for Firebase JobDispatcher has been removed because of its impending deprecation. This means that the
work-firebaseartifact will no longer be updated as we head into beta. We will be looking into adding an alternative in the future. - Combined
PayloadintoResult.Resultis now a "sealed class" with three concrete implementations, which you can obtain viaResult.success()(orResult.success(Data)),Result.failure()(orResult.failure(Data)), andResult.retry(). YourListenableFutures now resultResultinstead ofPayload.Workers don't have getter and setter methods for outputData. - Added
Operation.await()andListenableFuture.await()Kotlin extension methods. - Renamed
Operation.getException()toOperation.getThrowable(). - The
ContentUriTriggersclass and methods referencing it are no longer available for public usage. - Removed the rest of the varargs methods in
WorkManager,WorkContinuation, andOneTimeWorkRequestto streamline the API. To fix any build problems, you can wrap your existing varargs withArrays.asList(...). We still include single-argument versions of each method. - Removed
WorkContinuation.combine(OneTimeWorkRequest, *)variants. They were presenting a confusing API; the existingcombinemethods are more understandable.
Версия 1.0.0-alpha11
8 ноября 2018 г.
This release contains many changes that will become stable API at beta . There are breaking API changes in this release; please see the Breaking API Changes section below.
Изменения в API
-
work-runtime-ktxintroduces a newCoroutineWorker. -
WorkStatushas been renamed toWorkInfo. All correspondinggetStatusmethod variants have been renamed to the correspondinggetWorkInfovariants. This is a breaking change. -
ListenableWorker.onStopped()no longer accepts has a boolean argument representing if theWorkRequestwas cancelled.WorkManagerno longer makes this distinction. This is a breaking change. -
androidx.work.testpackage has been renamed toandroidx.work.testingpackage. This is a breaking change. - Setters on
Constraintsare no longer a part of the public API. This is a breaking change. -
WorkerParameters.getTriggeredContentUris()andWorkerParameters.getTriggeredContentAuthorities()previously returned arrays. Now these methods return Collections. This is a breaking change. -
ListenableWorker.onStartWork()is renamed toListenableWorker.startWork(). This is a breaking change. - The constructor for
WorkStatusis no longer a part of the public API. This is a breaking change. -
Configuration.getMaxJobSchedulerID()andConfiguration.getMinJobSchedulerID()are renamed toConfiguration.getMinJobSchedulerId()andConfiguration.getMaxJobSchedulerId()respectively. This is a breaking change. - Added a lot of
@NonNullannotations to the public API to improve ergonomics of the API. - Add
WorkManager.enqueueUniqueWork()API to enqueue uniqueOneTimeWorkRequests without having to create aWorkContinuation. - All variants of
enqueueandcancelmethods onWorkManagernow return a newOperationtype. This is a breaking change. - All variants of
enqueueno longer accept varargs forWorkRequests. This is a breaking change. Use Collections instead. You can useArrays.asList()to modify existing code. We did this to reduce the API surface and method count. - Attempting to
initializeWorkManagermore than once per process will now result in anIllegalStateException. This is a breaking change.
Исправлены ошибки
-
WorkRequest.Builders in thework-runtime-ktxartifact now useListenableWorkers. Fixes b/117666259 - Ensure the next run time for
PeriodicWorkis in the future. Fixes b/118204399 - Remove potential disk I/O when using WorkManager on app startup. Fixes b/117796731
- Fix a race condition in
WorkConstraintsTracker. Fixes android-workmanager/issues/56
Breaking API Changes
-
WorkStatushas been renamed toWorkInfo. All correspondinggetStatusmethod variants have been renamed to the correspondinggetWorkInfovariants. -
ListenableWorker.onStopped()no longer accepts has a boolean argument representing if theWorkRequestwas cancelled.WorkManagerno longer makes this distinction. -
androidx.work.testpackage has been renamed toandroidx.work.testingpackage. - Setters on
Constraintsare no longer a part of the public API. -
WorkerParameters.getTriggeredContentUris()andWorkerParameters.getTriggeredContentAuthorities()previously returned arrays. Now these methods return Collections. -
ListenableWorker.onStartWork()is renamed toListenableWorker.startWork(). - The constructor for
WorkStatusis no longer a part of the public API. -
Configuration.getMaxJobSchedulerID()andConfiguration.getMinJobSchedulerID()are renamed toConfiguration.getMinJobSchedulerId()andConfiguration.getMaxJobSchedulerId()respectively. - All variants of
enqueueandcancelmethods onWorkManagernow return a newOperationtype. - All variants of
enqueueno longer accept varargs forWorkRequests. - Attempting to
initializeWorkManagermore than once per process will now result in anIllegalStateException.
Версия 1.0.0-alpha10
11 октября 2018 г.
This release supports developer-controlled asynchronous work. There are breaking API changes in this release; please see the Breaking API Changes section below.
We anticipate that WorkManager is entering the final phases of its alpha period. We expect to be API stable in beta, so please take some time to file your feedback on our issue tracker.
Изменения в API
- Removed all previously
deprecatedmethods and classes, notably the defaultWorkerconstructor. This is a breaking API change. - Renamed
NonBlockingWorkertoListenableWorker, which is now an unhidden public class and ready for usage.-
ListenableWorkerprovides access to one abstract method,ListenableFuture<Payload> onStartWork()which is called on the main thread. It is up to you to start and process work asynchronously. When finished, you should update theListenableFutureappropriately. Reference implementations ofListenableFutures are provided in theFuturespackage inalpha02(see below theWorkManagersection). -
WorkerextendsListenableWorkerand still operates as before, with an abstractResult doWork()method. - Shuffled some methods and members from
WorkertoListenableWorker. - We shall soon provide reference implementations for
ListenableWorkers that use Kotlin coroutines (once the stable versions are released) and RxJava2.
-
- The interface
WorkerFactoryand the concrete implementationDefaultWorkerFactoryhave been merged into an abstract class calledWorkerFactory. The implementation ensures that the default reflection-based behavior is called as a last-ditch effort for any user-createdWorkerFactoryinstances. This is a breaking change. - Removed
WorkManager.synchronous()andWorkContinuation.synchronous()and all related methods. AddedListenableFuture<Void>as the return type of many methods in the API. This is a breaking API change.- You can now synchronously get and observe by using
ListenableFutures. For example,WorkManager.enqueue()used to returnvoid; it now returns aListenableFuture<Void>. You can callListenableFuture.addListener(Runnable, Executor)orListenableFuture.get()to run code once the operation is complete. - Note that these
ListenableFutures do not tell you if the operation succeeded or failed; only that they finished. You will still need to chain WorkManager methods to find out this information. - We ignore
cancel()calls on these objects, as they are confusing and hard to reason about (are you cancelling the operation or the resulting work?). This is within theFutures contract. - To maintain parity with the synchronous
getStatus*methods, we have providedListenableFuturevariants, and renamed the existing ones that returnedLiveDatato explicitly have "LiveData" as part of the name (for example,getStatusesByIdLiveData(UUID)). This is a breaking API change.
- You can now synchronously get and observe by using
Исправлены ошибки
- Fixed the known issue from alpha09 regarding duplicate
androidx-annotations.profiles. You may remove the workaround from the previous release notes by deletingexclude 'META-INF/proguard/androidx-annotations.pro'from your gradle file. - Added proguard configurations to keep new
Workerconstructor. b/116296569 - Fix potential
NullPointerExceptionin a race condition where work wasREPLACEd. b/116253486 and b/116677275 -
WorkContinuation.combine()now accepts one or moreWorkContinuations instead of two or more. b/117266752
Breaking API Changes
- Removed all previously
deprecatedmethods and classes, notably the defaultWorkerconstructor. - The interface
WorkerFactoryand the concrete implementationDefaultWorkerFactoryhave been merged into an abstract class calledWorkerFactory. - Removed
WorkManager.synchronous()andWorkContinuation.synchronous(). -
WorkManager.getStatus*()methods now returnListenableFutures.WorkManager.getStatus*LiveData()returnLiveDatas.
Версия 1.0.0-alpha09
19 сентября 2018 г.
Known Issue
If you run into the following issue: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'", please put the following in your gradle file as a temporary workaround while we fix the issue in alpha10:
Классный
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Исправлены ошибки
- Added another fix that was needed for the "100 jobs" error. b/115560696
- Added some fixes for foreign key constraint errors due to race conditions. b/114705286
- Delegated
ConstraintTrackingWorker.onStopped(boolean)calls to the underlyingWorker. b/114125093 - Enforce correct minimum backoff delay for Firebase JobDispatcher. b/113304626
- Improved threading guarantees internal to the library.
- Correct potential issue with deduping of
LiveDatainternally.
Изменения в API
- You can now create your own
Workerinstances at runtime by specifying aWorkerFactoryas part of theWorkManager.Configuration. The fallback factory isDefaultWorkerFactory, which matches behavior of previous versions of WorkManager.- The default constructors for
WorkerandNonBlockingWorkerare now marked as deprecated. Please use the new constructor (Worker(Context, WorkerParameters)) and callsuper(Context, WorkerParameters); future versions of WorkManager will remove the default constructor.
- The default constructors for
- We have started using the new
ListenableFutureartifact internally (free of Guava dependencies). We will introduce ListenableFutures to the API in upcoming releases. This change will support the eventual unhiding ofNonBlockingWorker. - Add ability to trigger timed work in
TestDriverviaTestDriver.setInitialDelayMet(UUID)andTestDriver.setPeriodDelayMet(UUID). b/113360060
Решающие перемены
- The default
WorkerandNonBlockingWorkerconstructors are deprecated. Please migrate to the new constructor ASAP. Future versions will remove the default constructor.
Версия 1.0.0-alpha08
27 августа 2018 г.
Исправлены ошибки
- Explicitly labelled WorkManager components as direct boot unaware so they don't fire up during direct boot. In the future, we will provide a version of WorkManager that is direct boot-aware. b/112665532
- Fixed an issue where retried work was not running. b/112604021
- Fixed periodic work not executing repeatedly (related to the above issue). b/112859683
- Honored backoff policies when the app process is already running.
- Corrected exception messages in
Datato indicate the limit is 10KB. - Lowered maximum value of
Configuration.setMaxSchedulerLimit(int)to 50 to account for some latency inJobSchedulerprocessing completion. b/112817355
Версия 1.0.0-alpha07
16 августа 2018 г.
Исправлены ошибки
- Fixed a potential SQL query with negative limits that could return an unbounded number of results.
- Work that has finished execution now correctly cancels all pending copies of that work in other Schedulers. This led to exceeding the
JobSchedulerjobs limit. b/111569265 - Fixed a
ConcurrentModificationExceptioninConstraintTracker. b/112272753 - Changed return type annotations of
Data.getBooleanArray(String)andData.getIntArray(String)to@Nullableinstead of@NonNull. b/112275229
Изменения в API
-
Workernow extends a new class,NonBlockingWorker. This does not affect any current usage. In the future,NonBlockingWorkerwill become a fully supported entity for custom threading solutions. - Changed return type annotations of
Data.getBooleanArray(String)andData.getIntArray(String)to@Nullableinstead of@NonNull. b/112275229 - Kotlin extensions: deprecated
Map.toWorkData()and added a top-levelworkDataOf(vararg Pair<String, Any?>)to be more consistent with existing APIs.
Версия 1.0.0-alpha06
1 августа 2018 г.
Исправлены ошибки
- Prevent a database lock when scheduling work. b/111801342
- Fix a bug which causes
PeriodicWorkto not run on schedule when in Doze mode. b/111469837 - Fix a race condition when tracking constraints which causes
WorkManagerto crash. googlecodelabs/android-workmanager/issues/56 - Create unique
WorkRequests when usingWorkRequest.Builder#build(). b/111408337 - Enable the use of
RescheduleReceiveronly when there areWorkRequests that need it. b/111765853
Версия 1.0.0-alpha05
July 24, 2018
Изменения в API
-
WorkManager.getInstance()is now annotated with@NonNullinstead of@Nullable. Instead, if the singleton isn't properly initialized in cases of manual initialization, the method will throw anIllegalStateException. This is a breaking API change. - Added a new API,
Configuration.Builder.setMinimumLoggingLevel(int), which can control WorkManager verbosity. By default, WorkManager logsLog.INFOand above. - Changed signature of
Data.getString()so it no longer takes a default value (it is implicitlynull). This is a breaking API change. - Marked some methods needed only for internal usage as
@hide. This includes theConstraintsconstructor,Data.toByteArray(), andData.fromByteArray(byte[]). This is a breaking API change.
Исправлены ошибки
- WorkManager no longer executes work during known cases of auto-backup. This could have resulted in a crash. b/110564377
- Fixed double-scheduling of
PeriodicWorkRequests when usingJobScheduler. b/110798652 - Fixed an issue with
PeriodicWorkRequests not executing correctly after device doze. b/111469837 - Fixed an issue with initial delays when using Firebase JobDispatcher. b/111141023
- Fixed some potential race conditions and timing issues.
- Correctly freed up
BroadcastReceivers that were no longer needed. - Optimized rescheduling performance when apps restart after being force closed.
- Allowed
TestScheduler.setAllConstraintsMet(UUID)to be called before or after enqueuing the givenWorkRequest. b/111238024
Решающие перемены
-
WorkManager.getInstance()is now annotated with@NonNullinstead of@Nullable. - Changed signature of
Data.getString()so it no longer takes a default value (it is implicitlynull). - Marked some methods needed only for internal usage as
@hide. This includes theConstraintsconstructor,Data.toByteArray(), andData.fromByteArray(byte[]).
Версия 1.0.0-alpha04
June 26, 2018
Исправлены ошибки
-
PeriodicWorkRequests are now correctly rescheduled when using theAlarmManagerbased implementation. - Fixed a potential ANR when rescheduling all workers after a force stop or a reboot. b/110507716
- Added nullability annotations to various WorkManager APIs. b/110344065
- Log uncaught exceptions that occur during Worker execution. b/109900862
- Allowed destructive database migrations in case you decide to roll back to an older version of WorkManager. b/74633270
- Fixed a migration crash if creating duplicate implicit tags. This is a very rare issue that occurred only if you used the same implicit tag format yourself.
Версия 1.0.0-alpha03
June 19, 2018
Исправлены ошибки
Fixed a race condition in the
AlarmManagerbased implementation. b/80346526 .Fixed duplicate jobs when using
JobSchedulerafter a device reboot.Jobs with Content URI triggers now persist across reboots. b/80234744
Documentation updates. b/109827628 , b/109758949 , b/80230748
Fixed a crash when re-enqueuing a
WorkRequest. b/109572353 .Fixed Kotlin compiler warnings when using the
work-runtime-ktxdependency.WorkManager now uses
Roomversion1.1.1-rc1.
Изменения в API
- Added
getStatusesSync(), the synchronous version ofWorkContinuation.getStatuses(). -
Workerhas the ability to distinguish between user-initiated cancellation and temporary os-requested stopping.Worker.isStopped()returnstrueif any kind of stop has been requested.Worker.isCancelled()returnstruewhen the work has been explicitly cancelled. b/79632247 - Add support for JobParameters#getNetwork() on API 28. This is exposed via
Worker.getNetwork(). - Added
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)so you can enforce how many jobs can be sent toJobSchedulerorAlarmManager. This helps preventWorkManagerfrom taking all your availableJobSchedulerslots. - Added
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)which helps define a range ofJobSchedulerjob ids safe forWorkManagerto use. b/79996760 -
Worker.getRunAttemptCount()returns the current run count for a givenWorker. b/79716516 -
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)allows you to enqueue a uniquePeriodicWorkRequests. b/79600647 -
WorkManager.cancelAllWork()cancels allWorkers. Libraries that depend onWorkManagercan query when this method was called last by usingWorkManager.getLastCancelAllTimeMillis()for additional cleanup of internal state. - Added
WorkManager.pruneWork()to remove completed jobs from the internal database. b/79950952 , b/109710758
Изменения в поведении
- Added an implicit tag for all
WorkRequests, which is the fully qualified class name for theWorker. This allows the ability to removeWorkRequests withouttags or when theidis not available. b/109572351
Решающие перемены
- Renamed
Worker.WorkerResulttoWorker.Result. -
Worker.onStoppednow has an additionalisCancelledparameter which is set totruewhen theWorkerhas explicitly been cancelled.
Версия 1.0.0-alpha02
24 мая 2018 г.
Исправлены ошибки
- Fixed a
NullPointerExceptiononState.isFinished(). b/79550068 - Fixed an issue which caused
Workers to be rescheduled onApplication.onCreate(). b/79660657 - Fixed an issue where you could schedule more work than is allowed by the OS. b/79497378
- Moved cleanup of wake locks associated with
Workers to the background thread. - The
AlarmManagerimplementation now correctly cleans up when all pending work is complete. - Fixed cleanup SQL queries which affected non-English locales. b/80065360
- Added support for
floats inData. b/79443878 -
Data.Builder.putAll()now returns an instance of theBuilder. b/79699162 - More javadoc and fixes in documentation. b/79691663
Изменения в API
-
Workers can react to being stopped.Worker.isStopped()can be used to check if aWorkerhas been stopped.Worker.onStopped()can be used to perform lightweight cleanup operations. -
Worker.getTags()API returns aSetof tags associated with theWorker. - Added
javax.time.Durationoverloads for APIs which take a combination of duration andTimeUnits. This is guarded by@RequiresApi(26). -
WorkManagerextensions have moved from theandroidx.work.ktxpackage to theandroidx.workpackage. The old extensions are deprecated and will be removed in a future version. -
Configuration.withExecutor()is deprecated. UseConfiguration.setExecutor()instead.
Версия 1.0.0-alpha01
May 8, 2018
WorkManager simplifies scheduling and execution of guaranteed, constraint-aware background work. This initial release is 1.0.0-alpha01 .