WorkManager
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 30 июля 2025 г. | 2.10.3 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от WorkManager, необходимо добавить репозиторий Google Maven в свой проект:
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
классный
dependencies { def work_version = "2.10.3" // (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.10.3" // (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.10
Версия 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при регистрацииWorkManagerNetworkCallback, используемого для отслеживания ограничений. ( 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», поскольку она содержит имя выполняемого Worker. Также добавлены разделы трассировки вокруг ключевых областейWorkManager. -
Configuration.workerCoroutineContextбыл добавлен для управления диспетчером, в котором выполняетсяCoroutineWorker. - Разработчики могут указать
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-альфа04
18 сентября 2024 г.
Выпущен androidx.work:work-*:2.10.0-alpha04 . Версия 2.10.0-alpha04 содержит следующие коммиты .
Изменения API
- Добавьте причину остановки
STOP_REASON_FOREGROUND_SERVICE_TIMEOUTдля случая, когда рабочий процесс переднего плана останавливается из-за истечения времени ожидания выполнения в зависимости от типа службы переднего плана. ( Ibd0af )
Версия 2.10.0-альфа03
4 сентября 2024 г.
Выпущен androidx.work:work-*:2.10.0-alpha03 . Версия 2.10.0-alpha03 содержит следующие коммиты .
Новые функции
- Добавлены теги трассировки к заданиям из
WorkManager, что значительно упрощает понимание команды «adb shell dumpsys jobscheduler», поскольку она содержит имя выполняемого Worker. Также добавлены разделы трассировки вокруг ключевых областей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-альфа02
17 апреля 2024 г.
Выпущен androidx.work:work-*:2.10.0-alpha02 . Версия 2.10.0-alpha02 содержит следующие коммиты .
Изменения API
- Добавлена возможность создавать области трассировки с помощью настраиваемого
@RestrictToTracerвWorkManager. ( I17d7f , b/260214125 ) - Добавлен
Configuration.workerCoroutineContextдля управления диспетчером, в котором выполняетсяCoroutineWorker. Это позволяет полностью избежать использованияDispatchers.DefaultвWorkManager. ( ICD1B7 ) - Добавить пользовательские обработчики исключений для Workers ( 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-альфа01
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-s. ВместоLiveDataход выполнения Worker теперь можно отслеживать через 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
- В
WorkInfoдобавленаstopReason. Она делает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теперь есть отдельный лимит для рабочих процессов Content 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-альфа02
26 июля 2023 г.
Выпущена версия androidx.work:work-*:2.9.0-alpha02 . Версия 2.9.0-alpha02 содержит следующие коммиты.
Новые функции
- Теперь
WorkManagerпредоставляет подсказку о причине предыдущей остановки воркера. Эту информацию можно получить из самого воркера с помощью методаgetStopReason()или изWorkInfoс помощью методаgetStopReason().
Изменения API
- В
WorkInfoдобавленаstopReason. Она делаетstopReasonдоступным после завершения рабочего процесса. Это может быть полезно для удобного отчётаstopReason, поскольку после остановки рабочего процесса само приложение может быть очень быстро завершено. ( I21386 ) - Разрешить настройку часов через конфигурацию и их использование для управления последовательностью выполнения тестов Worker. ( Ic586e )
- В
ListenableWorkerдобавлен методgetStopReason(), который дает подсказку о причине остановки рабочего процесса. ( I07060 ) - Добавлен
WorkManagerTestInitHelper#closeWorkDatabase()чтобы избежать предупреждения Closeguard об утечке ресурсов. ( Ia8d49 )
Исправления ошибок
- Добавлена возможность обхода
overrideNextScheduleTimeс помощьюTestDriverи исправлены проблемы с тестируемостью. ( Ic2905 )
Версия 2.9.0-альфа01
7 июня 2023 г.
Выпущена версия androidx.work:work-*:2.9.0-alpha01 . Версия 2.9.0-alpha01 содержит следующие коммиты.
Новые функции
- Наблюдаемость через
Flow-s. ВместоLiveDataход выполнения Worker теперь можно отслеживать через 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неинтрузивным способом, сохраняя исходное время постановки в очередь, цепочку и т. д. Подробную информацию см. в блоге об этой функции, а также в документации Javadocs дляWorkManager.updateWorkиExistingPeriodicWorkPolicy.UPDATE.
Изменения API
-
WorkManager.updateWorkбыл добавлен для обновления работы с сохранением ее исходного времени постановки в очередь и цепочки. ( I9a248 , b/219446409 ) - Добавлена политика
ExistingPeriodicWorkPolicy.UPDATE. Эта политика позволяет обновлять периодическую задачу по имени. Она похожа на существующуюREPLACE, но менее навязчива: она не отменяет рабочий процесс, если он в данный момент выполняется, и сохраняет время постановки в очередь — начальная задержка и период рассчитываются на основе исходного времени постановки в очередь, а не времени обновления.REPLACEустарела, чтобы избежать путаницы между очень похожими именамиREPLACEиUPDATE. Если вы всё ещё хотите сохранить прежнюю семантикуREPLACE, можно использовать новую добавленнуюCANCEL_AND_REENQUEUE, которая идентичнаREPLACE. ( I985ed , b/219446409 ) - Добавлена возможность перехвата исключений планирования, предоставляющих
Consumer<Throwable>через setSchedulingExceptionHandler ) - Добавлена возможность предоставлять
Consumer<Throwable>через setInitializationExceptionHandler для определения наличия проблем при попытке инициализации WorkManager. - Встроенные вспомогательные методы для
OneTimeWorkRequestиPeriodicWorkRequestбыли перенесены изandroidx.work:work-runtime-ktxвandroidx.work:work-runtime( I0010f , b/209145335 ) - Вспомогательные методы
WorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTagsбыли добавлены для непосредственного созданияWorkQuery. ( 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 ) - Распространять отмены в
CoroutineScopeнаListenableFutureпри использованииsuspendCancellableCoroutine.
Версия 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-альфа04
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-альфа03
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. ( ред. 1985 г. , б/н 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-альфа02
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-альфа01
12 января 2022 г.
Выпущена версия androidx.work:work-*:2.8.0-alpha01 . Версия 2.8.0-alpha01 содержит следующие коммиты.
Изменения API
- Добавлены вспомогательные методы
WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTagsдля непосредственного создания WorkQuery. ( 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 ) - RxWorker для RxJava 3 теперь имеет
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 содержит следующие коммиты.
Исправления ошибок
- Отмены в
CoroutineScopeраспространяются наListenableFutureпри использованииsuspendCancellableCoroutine. ( I77e63 ) - Исключение возникает немедленно, когда отложенные запросы на работу помечаются как ускоренные. bef1762
Версия 2.7.0
13 октября 2021 г.
Выпущен androidx.work:work-*:2.7.0 . Версия 2.7.0 содержит следующие коммиты.
Важные изменения по сравнению с версией 2.6.0
WorkManager представляет новый API
WorkRequest.Builder.setExpedited(...)для помощи с ограничениями Foreground Service в Android 12.При использовании
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-альфа05
21 июля 2021 г.
Выпущена версия androidx.work:work-*:2.7.0-alpha05 . Версия 2.7.0-alpha05 содержит следующие коммиты.
Этот выпуск также содержит исправления ошибок из выпуска WorkManager 2.6.0-beta02 .
Версия 2.7.0-альфа04
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-альфа03
21 апреля 2021 г.
Выпущена версия androidx.work:work-*:2.7.0-alpha03 . Версия 2.7.0-alpha03 содержит следующие коммиты.
Новые функции
Начиная с WorkManager
2.6.0-alpha02: добавлена поддержка Workers, которые могут запускаться в любом процессе. ( 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-альфа02
10 марта 2021 г.
Выпущена версия androidx.work:work-*:2.7.0-alpha02 . Версия 2.7.0-alpha02 содержит следующие коммиты.
Исправления ошибок
- Сделайте изменчивость
PendingIntentявной, чтобы исправить сбой при использовании Android 12. ( b/180884673 )
Версия 2.7.0-альфа01
18 февраля 2021 г.
Выпущена версия androidx.work:work-*:2.7.0-alpha01 . Версия 2.7.0-alpha01 содержит следующие коммиты.
Новые функции
WorkManager представляет новый API
WorkRequest.Builder.setExpedited(...)для учета ограничений службы переднего плана в Android 12.Приложения больше не могут запускать службу переднего плана, находясь в фоновом режиме. Поэтому для лучшей поддержки длительной работы, которая ранее была привязана к жизненному циклу службы переднего плана, приложения могут помечать запросы
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для инициализации WorkManager. Если ранее вы использовали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" />Добавлена поддержка Workers, которые могут запускаться в любом процессе. ( 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-альфа02
21 апреля 2021 г.
Выпущена версия androidx.work:work-*:2.6.0-alpha02 . Версия 2.6.0-alpha02 содержит следующие коммиты.
Новые функции
Добавляет поддержку Workers, которые могут запускаться в любом процессе. ( Iaf200 )
Добавлен
RemoteCoroutineWorker, который является реализациейRemoteListenableWorkerи может привязываться к удаленному процессу. ( I30578 )
Изменения API
- Добавлена поддержка сетевого ограничения
TEMPORARILY_UNMETERED. ( I08d5e ) - Поддержка многопроцессного рабочего процесса для
setProgressAsync(). ( Ib6d08 ) - Сделайте
WorkManagerInitializerпубличным, чтобы другиеandroidx.startup.Initializerмогли использовать их в качестве зависимостей. ( I5ab11 )
Версия 2.6.0-альфа01
24 марта 2021 г.
Выпущена версия androidx.work:work-*:2.6.0-alpha01 . Версия 2.6.0-alpha01 содержит следующие коммиты.
Новые функции
WorkManagerтеперь используетandroidx.startupдля инициализации WorkManager. Ранее это делал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(), который возвращаетoutputDataListenableWorker. ( Ie51e3 )
Исправления ошибок
- Добавить обходной путь для ошибки OEM, которая приводит к возникновению исключения
SecurityExceptionпри использовании APIAlarmManager. ( 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 всегда обращается к назначенному процессу. Внутрипроцессный планировщик также выполняется в назначенном процессе.
- Чтобы использовать
- Иногда
ActivityManagerне может создать экземплярJobServiceдля запуска задания. Это приводит к скрытому завершению базового задания из-за ошибки платформы.WorkManagerтеперь обеспечивает наличие резервных заданий для каждого отдельногоWorkRequestпри инициализацииApplicationпутём согласования заданий. Это значительно повышает надёжность выполнения заданий. ( b/172475041 , aosp/1489577 ) -
WorkManagerограничивает рост базы данных, сокращая длительность буфера, отслеживаемогоWorkRequestпослеWorkRequestзавершения. Ранее эта длительность составляла7дней. Теперь она сокращена до1дня + длительность keepResultsForAtLeast . ( aosp/1419708 ) -
TestListenableWorkerBuilderтеперь поддерживает конкретизированный класс, расширяющийListenableWorker, что упрощает тестирование. ( aosp/1443299 , b/169787349 ) - Инспектор WorkManager теперь доступен при использовании Android Studio Arctic Fox.
Версия 2.5.0-rc01
13 января 2021 г.
Выпущена версия androidx.work:work-*:2.5.0-rc01 . Версия 2.5.0-rc01 содержит следующие коммиты.
Исправления ошибок
- Исправлена ошибка, из-за которой
getWorkInfosLiveDataнекорректно становился недействительным после обновления сущностей при использовании API на основеWorkQuery. ( aosp/1540566 , b/173769028 ) - Исправлена ошибка, из-за которой транзакции базы данных в некоторых редких случаях не отмечались как успешные. Это вызывало проблемы на некоторых устройствах Motorola. ( aosp/1535368 , b/175944460 )
- Исправлена ошибка игнорирования исключений
NoSuchElementExceptionпри попытке отсоединения от мертвого процесса. ( aosp/1530589 ) - Улучшите,
ConstraintTrackingWorker, чтобы остановитьListenableWorker, только если его еще не остановили. ( AOSP/1496844 , B/172946965 ) - Обновление библиотеки Androidx.work для Target Java 8 ( IBD2F2 )
Версия 2.5.0-бета02
2 декабря 2020 г.
androidx.work:work-*:2.5.0-beta02 выпускается. Версия 2.5.0-бета02 содержит эти коммиты.
Исправления ошибок
- Исправлена ошибка в
androidx.work:work-multiprocess, где WorkManager непреднамеренно заблокировал призванный поток при попытке привязать к назначенному процессу. ( AOSP/1475538 ) - Исправлена ошибка, в которой
PeriodicWorkRequests не были правильно согласованы. ( B/172475041 , AOSP/1489577 ) - Добавлен обходной путь для ошибки платформы при остановке службы переднего плана при использовании API
setForeground*. ( B/170924044 , AOSP/1489901 )
Версия 2.5.0-бета01
28 октября 2020 г.
androidx.work:work-*:2.5.0-beta01 выпускается. Версия 2.5.0-бета01 содержит эти коммиты.
Новые функции
-
WorkManagerавтоматически дросселяет количествоWorkRequest, которое может быть подхвачено в процессе программы. Запросы все еще выполняются в порядке FIFO. ( AOSP/1455228 ) -
WorkManagerпытается выздороветь, когда хранилище данных приложения находится в плохом состоянии. ( AOSP/1463103 )
Исправления ошибок
- Когда
ListenableWorkerработники прерываются, немедленноENQUEUEDих, чтобы впоследствии их можно было перенести. ( AOSP/1455618 , B/170273988 )
Версия 2.5.0-Alpha03
14 октября 2020 г.
androidx.work:work-*:2.5.0-alpha03 выпускается. Версия 2.5.0-Alpha03 содержит эти коммиты.
API меняется
-
TestListenableWorkerBuilderиTestWorkerBuilderне используют необработанные типы. ( I883AD , B/169787349 )
Исправления ошибок
- Используйте
ApplicationInfo, чтобы определить имя процесса приложения по умолчанию. ( B/168716641 , AOSP/1429950 ) - Исправьте правила видимости для
RemoteWorkManagerиRemoteWorkContinuation. Эти API не отмечены как@Restricted. ( AOSP/1432091 ) - Исправьте правила прогика для
:work:work-multiprocess. ( AOSP/1432091 ) - Улучшить жизненные циклы уведомлений для длительной работы, связанной с обслуживанием переднего плана. ( B/168502234 , AOSP/1431331 )
Версия 2.5.0-Alpha02
16 сентября 2020 года
androidx.work:work-*:2.5.0-alpha02 выпускается. Версия 2.5.0-Alpha02 содержит эти коммиты.
Новые функции
- Добавьте API в Workquery, чтобы иметь возможность использовать
idS для запросаWorkInfoS. ( AOSP/1412372 , B/157335295 ) - Workmanager лучше поддерживает приложения, которые используют несколько процессов с новым артефактом (
androidx.work:work-multiprocess:*:*). Этот новый артефакт помогает решить несколько проблем, с которыми сталкиваются большие приложения, включая:- Workmanager обычно должен быть инициализирован в каждом процессе приложения. Это не очень здорово, потому что существует увеличение конкурента SQLite, которое, в свою очередь, вызывает другие проблемы. У Workmanager теперь есть новые API, которые можно использовать для обозначения первичного процесса приложения с использованием
Configuration#setDefaultProcessName(processName).processName- это полностью квалифицированное имя процесса, которое выглядит какpackageName:processName(например,com.example:remote). - Набор новых API:
RemoteWorkManagerиRemoteWorkContinuationдляenqueue,cancelиqueryна работу. Эти API не включают в себя вариантыLiveData, чтобы избежать спора SQLite в разных процессах. Все вызовыenqueue,cancelиqueryпересылаются в процессprimaryприложения с использованием AIDL и возвращают свободноListenableFutureпластинки. ( AOSP/1392657 , AOSP/1411210 , AOSP/1412215 , AOSP/1417713 )
- Workmanager обычно должен быть инициализирован в каждом процессе приложения. Это не очень здорово, потому что существует увеличение конкурента SQLite, которое, в свою очередь, вызывает другие проблемы. У Workmanager теперь есть новые API, которые можно использовать для обозначения первичного процесса приложения с использованием
API меняется
- Workmanager теперь Chrunes завершил
WorkRequestнет, у которых нет неполных зависимостей более агрессивно. Продолжительность буфера изменилась с7дней до1дня. ( AOSP/1419708 )
Исправления ошибок
- Workmanager теперь проактивно примиряет рабочие места, поэтому рабочие места
WorkRequestS иJobSchedulerсинхронизируются, когдаWorkManagerинициализируется. ( AOSP/1412794 , B/166292069 )
Версия 2.5.0-Alpha01
19 августа 2020 года
androidx.work:work-*:2.5.0-alpha01 выпускается. Версия 2.5.0-Alpha01 содержит эти коммиты.
Новые функции
- Изменения во внутренних API, которые позволяют нам обеспечить лучший инструмент с
WorkManagerв будущем. Следите за обновлениями.
Исправления ошибок
- Обработайте
SecurityExceptionS при отслеживании состояния сети на некоторых устройствах. ( AOSP/1396969 )
Внешний вклад
- Исправьте документацию для
ArrayCreatingInputMergerот Zac Sweers ( GitHub/43 ).
Версия 2.4.0
Версия 2.4.0
22 июля 2020 г.
androidx.work:work-*:2.4.0 выпускается. Версия 2.4.0 содержит эти коммиты.
Основные изменения с 2.3.0
- Планировщик
WorkManagerS теперь более способен. Раньше,Schedulerв процессе процесса рассматривал только выполнение работы, которая не была задержана и чьи ограничения были достигнуты. Теперь в процессе планировщика отслеживаетWorkRequestнет, которые могут быть выполнены в будущем, включая периодические экипажа.Schedulerв процессе также не наблюдает ограничений планирования (но все еще ограничен размеромExecutor, используемого Workmanager). Это означает, что приложение теперь может выполнять гораздо больше рабочих, когда приложение находится на переднем плане. Чтобы управлять выполнением отсроченной работы на переднем плане,WorkManagerтакже представляет новый настраиваемыйRunnableScheduler. ( AOSP/1185778 ) - Workmanager теперь поддерживает Rxjava 3. Чтобы использовать Rxjava 3, вы должны включить следующую зависимость:
implementation "androidx.work:work-rxjava3:2.4.0". ( AOSP/1277904 ) - Добавлена возможность запросить на
WorkInfoс использованиемWorkQuery. Это полезно, когда разработчики хотят запрашиватьWorkInfoс помощью комбинации нескольких атрибутов. Для получения дополнительной информации посмотрите наWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)илиWorkQuery.Builder.fromUniqueWorkNames(...). ( AOSP/1253230 , B/143847546 ) Добавьте возможность запросить диагностическую информацию у
WorkManager, используя:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"Это предоставляет много полезной информации, включая:
- WorkRequests, которые были завершены за последние 24 часа.
- WorkRequests, которые в настоящее время работают.
- Запланированные рабочие закидки. ( AOSP/1235501 )
Добавьте
ExistingWorkPolicy.APPEND_OR_REPLACE, который похож наAPPEND, но заменяет цепочку, которая отменила или провалилась предпосылки. ( B/134613984 , AOSP/1199640 )Предоставьте возможность добавить пользовательский
RunnableSchedulerдля отслеживания рабочих зачинений, которые необходимо выполнить в будущем. Это используется в программе Processess. ( AOSP/1203944 )Добавьте поддержку для динамического добавления заводов, чтобы делегировать при использовании
DelegatingWorkerFactoryработ. ( B/156289105 , AOSP/1309745 )Выравнивание отслеживания для ограничений
BATTERY_NOT_LOWболее тесно с платформой. ( AOSP/1312583 )Планировщик Introcess теперь использует лучшие API для определения имени процесса. Это полезно для лучшей поддержки приложений, которые используют несколько процессов. ( AOSP/1324732 )
Новые правила Lint, которые обеспечивают соблюдение:
- Использование правого
foregroundServiceType. ( B/147873061setForegroundAsync()AOSP/1215915 ) - Указание идентификаторов Jobscheduler, которые Workmanager должен использовать при непосредственном использовании API Jobservice. AOSP/1223567
- Добавлено новое правило Lint, которое гарантирует, что реализации
ListenableWorkerтеперьpublicпри использованииWorkerFactoryпо умолчанию. ( AOSP/1291262 )
- Использование правого
Вызовы на
setForegroundAsync(), которые не завершены до завершенияListenableWorker, теперь будут сигнализированы с помощьюIllegalStateExceptionэкземпляры на возвращаемойListenableFuture. ( AOSP/1262743 )Исправьте ошибку, в которой
ForegroundServiceне останавливается после прерывания переднегоWorker. ( B/155579898 , AOSP/1302153 )Исправьте ошибку, в которой
WorkManagerпытается выполнить несколько экземпляровWorker, связанного с службой переднего плана ( B/156310133 , AOSP/1309853 )
Версия 2.4.0-RC01
24 июня 2020 г.
androidx.work:work-*:2.4.0-rc01 выпускается. Версия 2.4.0-RC01 содержит эти коммиты.
Исправления ошибок
- Планировщик Introcess теперь использует лучшие API для определения имени процесса. Это полезно для лучшей поддержки приложений, которые используют несколько процессов. ( AOSP/1324732 )
Версия 2.4.0-бета01
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 и androidx.work:work-testing:2.4.0-beta01 :. Версия 2.4.0-бета01 содержит эти коммиты.
Исправления ошибок
- Исправьте ошибку, в которой
ForegroundServiceне останавливается после прерывания переднегоWorker. ( B/155579898 , AOSP/1302153 ) - Исправьте ошибку, в которой
WorkManagerпытается выполнить несколько экземпляровWorker, связанного с службой переднего плана ( B/156310133 , AOSP/1309853 ) - Добавьте поддержку для динамического добавления заводов, чтобы делегировать при использовании
DelegatingWorkerFactoryработ. ( B/156289105 , AOSP/1309745 ) - Выравнивание отслеживания для ограничений
BATTERY_NOT_LOWболее тесно с платформой. ( AOSP/1312583 )
Версия 2.4.0-Alpha03
29 апреля 2020 г.
androidx.work:work-*:2.4.0-alpha03 выпускается. Версия 2.4.0-Alpha03 содержит эти коммиты.
Новые функции
- Workmanager теперь поддерживает Rxjava 3. Чтобы использовать Rxjava 3, вы должны включить следующую зависимость:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03". ( AOSP/1277904 ) - Добавлено новое правило Lint, которое гарантирует, что реализации
ListenableWorkerтеперьpublicпри использованииWorkerFactoryпо умолчанию. ( AOSP/1291262 )
API меняется
- Вызов
setProgressAsync()после того, какListenableWorkerзавершит выполнение, теперь будет сигнализировать обExceptionчерезListenableFutureместорождение. ( AOSP/1285494 ) -
WorkQuery.Builderтеперь отмеченfinal. ( AOSP/1275037 ) -
WorkQuery.BuilderFactory MethodswithStates,withTagsиwithUniqueWorkNamesбыли переименованы вfromStates,fromTagsиfromUniqueWorkNamesсоответственно. ( AOSP/1280287 )
Исправления ошибок
- Игнорировать
SecurityExceptionS при отслеживании сети состояния устройства. ( B/153246136 , AOSP/1280813 )
Версия 2.4.0-Alpha02
1 апреля 2020 г.
androidx.work:work-*:2.4.0-alpha02 выпускается. Версия 2.4.0-Alpha02 содержит эти коммиты.
Новые функции
- Добавлено новое правило Lint, которое предупреждает, когда
WorkRequestS требует какConstraints.setRequiresCharging(...)иConstraints.setRequiresDeviceIdle(...). Некоторые устройства никогда не заряжаются и одновременно простаивают. Таким образом, такие запросы будут работать реже, чем ожидалось. ( AOSP/1253840 )
API меняется
Добавлена возможность запросить на
WorkInfoс использованиемWorkQuery. Это полезно, когда разработчики хотят запрашиватьWorkInfoс помощью комбинации нескольких атрибутов. Для получения дополнительной информации посмотрите наWorkQuery.Builder withStates(...),WorkQuery.Builder withTags(...)илиWorkQuery.Builder withUniqueWorkNames(...). ( AOSP/1253230 , B/143847546 )Вызовы на
setForegroundAsync(), которые не завершены до завершенияListenableWorker, теперь будут сигнализированы с помощьюIllegalStateExceptionэкземпляры на возвращаемойListenableFuture. ( AOSP/1262743 )
Исправления ошибок
- Исправлено правило LINT, которое проверяет на неверные промежутки времени для
PeriodicWorkRequest. ( AOSP/1254846 , B/152606442 )
Версия 2.4.0-Alpha01
4 марта 2020 г.
androidx.work:work-*:2.4.0-alpha01 выпускается. Версия 2.4.0-Alpha01 содержит эти коммиты.
Новые функции
Планировщик
WorkManagerS теперь более способен. Раньше, планировщик в процессе процесса рассматривал только выполнение работы, которая не была задержана и чьи ограничения были достигнуты. Теперь в процессе планировщика отслеживаетWorkRequest, которые могут быть выполнены в будущем, включаяPeriodicWorkRequestразмер. Планировщик в процессе также не наблюдает ограничений планирования (но все еще ограничен размеромExecutorиспользуемого Workmanager). Это означает, что приложение теперь может выполнять гораздо большеWorkRequest, когда приложение находится на переднем плане. ( AOSP/1185778 )Добавлена возможность запросить диагностическую информацию у Workmanager с использованием
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". Это предоставляет много полезной информации, включая:- WorkRequests, которые были завершены за последние 24 часа.
- WorkRequests, которые в настоящее время работают.
- Запланированные рабочие закидки. ( AOSP/1235501 )
Новые правила Lint, которые обеспечивают соблюдение:
- Использование правого
foregroundServiceType. ( B/147873061setForegroundAsync()AOSP/1215915 ) - Указание идентификаторов
JobScheduler, которыеWorkManagerдолжен использовать при непосредственном использовании APIJobService. ( AOSP/1223567 )
- Использование правого
API меняется
Добавьте
ExistingWorkPolicy.APPEND_OR_REPLACE, который похож наAPPEND, но заменяет цепочку, которая отменила или провалилась предпосылки. ( B/134613984 , AOSP/1199640 )Предоставьте возможность добавить пользовательский
RunnableSchedulerдля отслеживанияWorkRequest, которые необходимо выполнить в будущем. Это используется в программе Processess. ( AOSP/1203944 )
Исправления ошибок
- Устаревший
setProgress()уRxWorker, потому что он ранее возвращалSingle<Void>, который является невозможным типом. Добавлен новый APIsetCompletableProgress(), который возвращаетCompletableвместо этого; и добавили новые правила Lint, которые помогают мигрировать в новые API. ( B/150080946 , AOSP/1242665 )
Версия 2.3.4
Версия 2.3.4
18 марта 2020 года
androidx.work:work-*:2.3.4 выпущен. Версия 2.3.4 содержит эти коммиты.
Исправления ошибок
- Исправлена ошибка, которая приведет к запуску нескольких экземпляров долгосрочных
Workerпосле превышения 10 -минутного окна выполнения. ( AOSP/1247484 , B/150553353 ) - Исправление для Lint
IssueRegistry's Lint's Lint. Спасибо @zacsweers из Slack, за вклад. ( AOSP/1217923 )
Версия 2.3.3
Версия 2.3.3
4 марта 2020 г.
androidx.work:work-*:2.3.3 выпущен. Версия 2.3.3 содержит эти коммиты.
Исправления ошибок
- Исправлена ошибка, где, если
Workerбыл прерван, она не будет перенесена правильно. ( B/150325687 , AOSP/1246571 )
Версия 2.3.2
Версия 2.3.2
19 февраля 2020 г.
androidx.work:work-*:2.3.2 выпущены. Версия 2.3.2 содержит эти коммиты.
Исправления ошибок
- Исправляет проблему, когда Workmanager превышает 100 лимита работы в Jobscheduler в редких случаях. ( AOSP/1226859 , B/149092520 )
- Исправление для условия гонки в ConstraintControllers. ( AOSP/1220100 )
- Улучшение жизненного цикла обслуживания переднего плана управления для долгожданных работников. ( AOSP/1226295 )
- Улучшение управления отменой уведомлений для давних работников после отмены работников. ( AOSP/1228346 )
Версия 2.3.1
Версия 2.3.1
5 февраля 2020 года
androidx.work:work-*:2.3.1 выпускается. Версия 2.3.1 содержит эти коммиты .
Исправления ошибок
- Лучше управлять жизненным циклом
NotificationS для давнихWorker, которые работают, когда активенServiceпереднего плана. ( AOSP/1218539 , B/147249312 ) -
WorkManagerтеперь зависит отandroidx.sqlite:sqlite-framework:2.1.0стабильная. ( AOSP/1217729 ) - Добавлены правила Lint, чтобы гарантировать, что в
AndroidManifest.xmlуказанforegroundServiceTypeForegroundInfoforegroundServiceType. ( AOSP/1214207 , B/147873061 )
Версия 2.3.0
Версия 2.3.0
22 января 2020 г.
androidx.work:work-*:2.3.0 выпускается без изменений с 2.3.0-rc01 . Версия 2.3.0 содержит эти коммиты .
Важные изменения с 2.2.0
- Поддержка долгосрочной или важной работы с помощью
ListenableWorker#setForegroundAsync(). - Поддержка прогресса работников с помощью
ListenableWorker#setProgressAsync(). - Workmanager теперь упаковывает дополнительные правила Lint в рамках библиотеки, которая помогает рано поймать ошибки.
Версия 2.3.0-RC01
8 января 2020 г.
androidx.work:work-*:2.3.0-rc01 выпускается. Версия 2.3.0-RC01 содержит эти коммиты .
Этот релиз идентичен 2.3.0-beta02
Исправления ошибок
- Артефакт
work-testingв настоящее время определяет зависимостьapiотwork-runtime-ktx. ( AOSP/1194410 )
Версия 2.3.0-бета02
18 декабря 2019 г.
androidx.work:work-*:2.3.0-beta02 выпускается. Версия 2.3.0-бета02 содержит эти коммиты .
Новые функции
- Добавлено лучшее сообщение об ошибке для невнимательных исключений SQLite. ( AOSP/1185777 )
- Добавлено правило Lint, которое гарантирует, что поставщик контента
androidx.work.impl.WorkManagerInitializerудаляется изAndroidManifest.xmlпри использовании по инициализации по требованию. ( AOSP/1167007 ) - Добавлено предупреждение о ворсе, когда
enqueue()используется дляPeriodicWorkRequestвместоenqueueUniquePeriodicWork(). ( AOSP/1166032 )
API меняется
-
ForegroundInfoтеперь требует, чтобы вы указалиnotificationId, которое будет использоваться при использованииListenableWorker.setForegroundAsync(). Это нарушающее изменение. Это позволяет вам запускать несколько долгосрочныхWorkerпараллельно.WorkManagerтакже лучше управляет жизнью предоставленныхNotification. ( B/145473554 , AOSP/1181208 , ASOP/1181216 , ASOP/1183577 )
Исправления ошибок
- Исправлена ошибка в реализации Alarmmanager, где сигналы тревоги не очищались правильно. ( AOSP/1156444 )
- Исправлена ошибка, в которой пустой список
WorkRequestSportquest приведет к созданию неверной цепочкиWorkContinuation. ( B/142835274 , AOSP/1157051 )
Изменения зависимости
- Workmanager теперь использует комнату 2.2.2.
Версия 2.3.0-бета01
20 ноября 2019 года
androidx.work:work-*:2.3.0-beta01 выпускается. Версия 2.3.0-бета01 содержит эти коммиты .
Новые функции
- Добавлено новое правило Lint, которое предотвращает ошибки разработчика из-за неправильной реализации
androidx.work.Configuration.Providerпри использовании инициализации по требованию. AOSP/1164559
Версия 2.3.0-Alpha03
23 октября 2019 г.
androidx.work:work-*:2.3.0-alpha03 выпускается. Версия 2.3.0-Alpha03 содержит эти коммиты .
Новые функции
- Добавлен
WorkManager.createCancelPendingIntent()API, который позволяет легко отменитьWorkRequestS без необходимости зарегистрировать другой компонент вAndroidManifest.xml. Этот API делает особенно легко отменитьWorkRequestS отNotificationS. Мы ожидаем, что это будет в сочетании с новыми API переднего плана в 2.3.0. - Workmanager теперь зависит от
androidx.room:*:2.2.0стабильная.
API меняется
- Переименован
ForegroundInfo.getNotificationType()наForegroundInfo.getForegroundServiceType(), чтобы более соответствовать базовым API -интерфейсам платформы. ( B/142729893 , AOSP/1143316 )
Исправления ошибок
- Исправлена ошибка, которая вызвана ненужным вызовом
setTransactionSuccessful()вне транзакции. Это происходит для редких миграций. ( B/142580433 , AOSP/1141737 )
Версия 2.3.0-Alpha02
9 октября 2019 г.
androidx.work:work-*:2.3.0-alpha02 выпускается. Версия 2.3.0-Alpha02 содержит эти коммиты .
Новые функции
- Workmanager теперь поддерживает долгосрочную работу или важную работу, которая должна быть в живой ОС. Для получения дополнительной информации посмотрите на
ListenableWorker#setForegroundAsync()(илиCoroutineWorker#setForeground()для kotlin). ( AOSP/1133636 )
API меняется
-
containsKeyAPI в данных вDataпереименован вhasKeyWithValueOfType. Соответствующий метод расширения в библиотекеktxтакже был переименован. ( B/141916545 )
Исправления ошибок
- Графики Workmanager работают справедливо, когда количество ограничений планирования подходов
WorkRequest. ( AOSP/1105766 ) - Workmanager называет
ListenableWorker#onStopped()только в том случае, если работа еще не завершена. ( B/140055777 ) - Workmanager теперь удаляет информацию о прогрессе, когда работнику прерывается или достигает своего терминального состояния. ( AOSP/1114572 )
-
Dataтеперь имеют гораздо более полезное представлениеtoString(). ( B/140945323 ) -
Dataтеперь имеют метод лучшегоequals(). Это также поддерживаетdeepEqualsдля типовArray. ( B/140922528 ) - Workmanager теперь хранит свои внутренние файлы базы данных и предпочтений в каталоге без резервного копирования. ( B/114808216 )
Версия 2.3.0-Alpha01
22 августа 2019 г.
androidx.work:work-*:2.3.September 5, 20190-alpha01 выпускается. Коммуты, включенные в эту версию, можно найти здесь .
Новые функции
-
ListenableWorker, теперь может установить прогресс через APIsetProgressAsync(). Также добавлено соответствующий APIsetProgresssuspendвCoroutineWorkerиsetProgressвRxWorker, который возвращаетSingle<Void>. С этими новыми APIS работники могут передавать информацию о прогрессе черезWorkInfo, который имеет соответствующий APIgetProgress. ( B/79481554 ) -
Dataимеют APIcontainsKey(), который можно использовать для проверки этих входных данных дляWorkerS, имеет ключи с ожидаемым типом. ( B/117136838 ) - Теперь
Dataмогут быть сериализованы с использованиемData.toByteArray()иData.fromByteArray(). Обратите внимание, что сDataнет гарантий, поэтому вы не должны сохранять их или использовать для IPC между приложениями. Они безопасны для использования только между несколькими процессами одного и того же приложения. - Добавлена возможность указать
InputMergerFactoryчерезConfiguration.setInputMergerFactory. ( B/133273159 )
API меняется
- Workmanager бросит экземпляр
IllegalStateException, еслиWorkerFactoryвозвращает экземплярListenableWorker, который был ранее применен. ( B/139554406 ) - Обновления документации вокруг отмены
ListenableFutureи обратного вызоваonStopped()вListenableWorker. ( B/138413671 )
Исправления ошибок
- Планировщик в процессе перепроцесса теперь игнорирует
WorkRequestS с ограничениемidle. Эти запросы теперь подбираютсяJobSchedulerтолько тогда, когда устройство на самом делеidle. ( AOSP/1089779 ) -
TestSchedulerтеперь правильно использует указанногоExecutorдля своего исполнителя внутренней задачи в тестах. ( AOSP/1090749 )
Версия 2.2.0
Версия 2.2.0
15 августа 2019 г.
androidx.work:work-*:2.2.0 выпускается. Коммуты, включенные в эту версию, можно найти здесь .
Этот релиз идентичен androidx.work:work-*:2.2.0-rc01 .
Важные изменения в 2.2.0 из 2.1.0
androidx.work:work-gcm:2.2.0 новый артефакт Maven, который поддерживает использование GCMnetworkManager в качестве планировщика, когда Google Play Services доступен для уровней API <= 22. Это дополнительная зависимость, которая помогает с более надежной и эффективной обработкой фоновых и функционированных фоновых обработок на более старых версиях API. Если ваше приложение использует службы Google Play, добавьте эту зависимость в ваш файл Gradle, чтобы автоматически получить поддержку GCMnetWorkManager. Если игровые услуги не доступны, Workmanager продолжит возвращаться к Alarmmanager на старых устройствах.
Версия 2.2.0-RC01
30 июля 2019 г.
androidx.work:work-*:2.2.0-rc01 выпускается. Коммуты, включенные в эту версию, можно найти здесь .
Исправления ошибок
- Исправлена ошибка в реализации Alarmmanager, которая приводит к преждевременному выключению службы и приводит к тому, что в редких случаях в редких
RejectedExecutionExceptionв редких случаях. ( AOSP/1092374 ) ( B/138238197 ). - Добавлен обходной путь для
NullPointerExceptionпри использовании APIJobSchedulerна некоторых устройствах. ( AOSP/1091020 ) ( B/138364061 ), ( B/138441699 )
Версия 2.2.0-бета02
19 июля 2019 г.
androidx.work:work-*:2.2.0-beta02 выпускается. Коммуты, включенные в эту версию, можно найти здесь .
Исправления ошибок
- Удалена непреднамеренная зависимость от Jacoco, которая была введена в
2.2.0-beta01.
Версия 2.2.0-бета01
17 июля 2019 г.
androidx.work:work-*:2.2.0-beta01 выпускается. Коммуты, включенные в эту версию, можно найти здесь .
Новые функции
-
androidx.work:work-gcm:2.2.0-beta01новый артефакт Maven, который поддерживает использование GCMnetworkManager в качестве планировщика, когда Google Play Services доступен для уровней API <= 22. Это дополнительная зависимость, которая помогает с более надежной и эффективной обработкой на более старых версиях API. Если ваше приложение использует службы Google Play, добавьте эту зависимость в ваш файл Gradle, чтобы автоматически получить поддержку GCMnetWorkManager. Если игровые услуги не доступны, Workmanager продолжит возвращаться к Alarmmanager на старых устройствах.
Исправления ошибок
- Исправлено для
IllegalArgumentExceptionпри отслеживании состояния сети на таблетках Nvidia Shield K1. ( AOSP/1010188 )
Версия 2.1.0
Версия 2.1.0
11 июля 2019 г.
androidx.work:work-*:2.1.0 выпускается. Этот релиз идентичен androidx.work:work-*:2.1.0-rc01 .
Важные изменения с 2,0,1
-
work-runtime-ktxтеперь требует Java 8. Если вы столкнетесь с любыми проблемами, вы можете добавить следующее в свойbuild.gradlekotlinOptions { jvmTarget = "1.8" } - Добавлена по требованию инициализации для Workmanager, которая создаст Workmanager только при ссылке. B/127497100 для настройки вашего проекта для инициализации по требованию:
- Отключите автоматический инициализатор .
- Реализовать
Configuration.Providerв вашем пользовательском объектеApplication. - Измените все ссылки на
WorkManager.getInstance()наWorkManager.getInstance(Context). В рамках этого изменения мы установилиWorkManager.getInstance(). Всегда безопаснее назвать новую заменуWorkManager.getInstance(Context), даже если вы не выполняете инициализацию по требованию.
-
PeriodicWorkRequestтеперь поддерживает первоначальные задержки. Вы можете использовать методsetInitialDelayнаPeriodicWorkRequest.Builder, чтобы установить начальную задержку. B/111404867 - Добавлена возможность делегировать в один или несколько зарегистрированных
WorkerFactoryS с использованиемDelegatingWorkerFactory. B/131435993 - Добавлена возможность настроить
Executor, используемого Workmanager для всех его внутренних книг с помощьюConfiguration.Builder.setTaskExecutor. - Добавлена возможность создавать модульные тестируемые
Workerи классыListenableWorker, используяTestWorkerBuilderиTestListenableWorkerBuilderвwork-testingартефакта.- Обратите внимание, что
work-testingтеперь тянет котлин в качестве зависимости и включает в себя несколько расширений Kotlin по умолчанию.
- Обратите внимание, что
- Добавлены попытки запустить счет для
WorkInfo. B/127290461 - Типы
Dataтеперь могут хранить и получать байты и байтовые массивы. Это не изменяет максимальный размер объектовData. - Workmanager теперь зависит от
Room 2.1.0, которая должна решить некоторые проблемы с базой данных.
Версия 2.1.0-RC01
27 июня 2019 г.
androidx.work:work-*:2.1.0-rc01 выпускается. Коммуты, включенные в эту версию, можно найти здесь .
Исправления ошибок
- Исправлена ошибка, которая приведет к сбою приложения при выполнении заданий с
JobScheduler, в то время как резервное копирование находилось в процессе B/135858602 .
Версия 2.1.0-beta02
20 июня 2019 г.
androidx.work:work-*:2.1.0-beta02 выпускается. Коммуты, включенные в эту версию, можно найти здесь .
Исправления ошибок
-
TestListenableWorkerBuilderтеперь использует правильныйWorkerFactoryпри создании экземпляровListenableWorker. B/135275844 - Исправлена ошибка, которая вызвала дрейфы в окнах выполнения для
WorkRequestS из -за смерти процесса. B/135272196
Версия 2.1.0-beta01
13 июня 2019 г.
androidx.work:work-*:2.1.0-beta01 выпускается. Коммуты, включенные в эту версию, можно найти здесь .
Исправления ошибок
- Workmanager теперь зависит от
Room 2.1.0, которая должна решить некоторые проблемы с базой данных. - Удалил немного стартап -диска ввода/вывода в главном потоке.
- Исправлен потенциальный тупик в отслеживании ограничений. B/134361006
- Предварительно отменена недействительная работа, приписываемая Workmanager. B/134058261
- Добавлены некоторые защитные звонки в API Jobscheduler для неправильных устройств.
Версия 2.1.0-Alpha03
5 июня 2019 г.
androidx.work:*:2.1.0-alpha03 выпускается.
Исправления ошибок
- Улучшенная документация для
PeriodicWorkRequest. -
WorkManagerTestInitHelperтеперь использует правильный фоновый исполнитель для тестов. - Исправление для проблем SQLite при работе с большими транзакциями на некоторых устройствах. ( B/130182503 )
- Зависимости Workmanager теперь более детализируют. ( B/133169148 ).
- Специфические ошибки в обходном пути при внедрении
JobSchedulerпри планировании работ с использованием WorkManager. - Улучшения в планировщике на основе Alarmmanager во время службы, которые ранее вызывали редкие аварии. ( B/133313734 )
Версия 2.1.0-Alpha02
16 мая 2019 года
Workmanager 2.1.0-Alpha02 выпускается. Эта версия содержит несколько новых API.
API меняется
PeriodicWorkRequestтеперь поддерживает первоначальные задержки. Вы можете использовать методsetInitialDelayнаPeriodicWorkRequest.Builder, чтобы установить начальную задержку. B/111404867Добавлена возможность делегировать в один или несколько зарегистрированных
WorkerFactoryS с использованиемDelegatingWorkerFactory. B/131435993Добавлена возможность настроить
Executor, используемого Workmanager для всех его внутренних книг с помощьюConfiguration.Builder.setTaskExecutor.Улучшенная документация вокруг
WorkRequest.keepResultsForAtLeastforatlest ( b/130638001 ) , инициализация по требованию иPeriodicWorkRequest.Builder.
Версия 2.1.0-Alpha01
24 апреля 2019 года
Workmanager 2.1.0-Alpha01 выпускается. Эта версия содержит несколько новых API. Обратите внимание, что начиная с этой версии, будут новые функции, которые не будут возвращены в релиз 1.x. Мы рекомендуем переключиться на 2.x.
API меняется
- Добавлена по требованию инициализации для Workmanager, которая создаст Workmanager только при ссылке. B/127497100 для настройки вашего проекта для инициализации по требованию:
- Отключите автоматический инициализатор .
- Реализовать
Configuration.Providerв вашем пользовательском объектеApplication. - Измените все ссылки на
WorkManager.getInstance()наWorkManager.getInstance(Context). В рамках этого изменения мы установилиWorkManager.getInstance(). Всегда безопаснее назвать новую заменуWorkManager.getInstance(Context), даже если вы не выполняете инициализацию по требованию.
- Добавлена возможность создавать модульные тестируемые
Workerи классыListenableWorker, используяTestWorkerBuilderиTestListenableWorkerBuilderвwork-testingартефакта.- Обратите внимание, что
work-testingтеперь тянет котлин в качестве зависимости, но также включает в себя несколько расширений Kotlin по умолчанию.
- Обратите внимание, что
- Добавлены попытки запустить счет для
WorkInfo. B/127290461 - Типы
Dataтеперь могут хранить и получать байты и байтовые массивы. Это не изменяет максимальный размер объектовData. - Устаревший
CoroutineWorker.coroutineContext. Это поле было неправильно напечатано какCoroutineDispatcher; Вам больше не нужно, чтобы вы могли перейти к желаемому CoroutIneContext сами в теле подвесной функции. -
RxWorker.createWork()иRxWorker.getBackgroundScheduler()теперь аннотируются с типами возврата@NonNull.
Версия 2.0.1
Версия 2.0.1
9 апреля 2019 г.
Workmanager 2.0.1 выпущен. Этот релиз идентичен 2.0.1-RC01 .
Версия 2.0.1-RC01
3 апреля 2019 г.
Workmanager 2.0.1-RC01 выпускается. Эта версия содержит некоторые исправления ошибок. Для пользователей Legacy 1.x некоторые из этих изменений также появляются в 1.0.1-RC01 .
Исправления ошибок
- Роболектрические тесты теперь работают должным образом с Workmanager. б/122553577
- Исправлено краевая сбоем с ограничениями, отслеживающими ограничения, не были очищены на API до предварительного Jobscheduler. б/129226383
- Исправлена
StackOverflowError, имеющая дело с длинными цепями работы. б/129091233 - Обновленная документация для
PeriodicWorkRequestS, чтобы указать, что время гибки не поддерживается на API 23. - Исправлено несколько сломанных ссылок в документации Котлина.
Версия 2.0.0
Версия 2.0.0
20 марта 2019 г.
Workmanager 2.0.0 выпущен. Эта версия идентична 2.0.0-RC01 и является версией Androidx стабильной 1,0.0 с зависимостями Androidx. Мы рекомендуем ориентироваться на эту версию вместо версий Legacy 1.x. Вся активная разработка будет нацелена на 2.x и 1.x будет получать критические исправления ошибок только в течение ограниченного времени.
Версия 2.0.0-RC01
7 марта 2019 г.
Workmanager 2.0.0-RC01 выпущен. Эта версия идентична стабильной 1,0.0, но имеет зависимости Androidx. Как только это достигнет 2,0.0, вы должны включить эту версию, и версии Legacy 1.x получит только некоторые критические исправления ошибок. Вся активная разработка будет направлена на 2.x.
Зависимости до антирода
Справочные документы: 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" }
Котлин
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 выпущен. Этот релиз идентичен 1.0.1-RC01 .
Обратите внимание, что мы настоятельно рекомендуем пользователям обновляться до Workmanager 2.x, так как в отклике 1.x будет очень мало обновлений. Новые API также не будут выпущены для библиотеки 1.x.
Версия 1.0.1-RC01
2 апреля 2019 года
Workmanager 1.0.1-RC01 выпускается. Эта версия содержит некоторые исправления ошибок.
Исправления ошибок
- Роболектрические тесты теперь работают должным образом с Workmanager. б/122553577
- Исправлено краевая сбоем с ограничениями, отслеживающими ограничения, не были очищены на API до предварительного Jobscheduler. б/129226383
- Исправлена
StackOverflowError, имеющая дело с длинными цепями работы. б/129091233
Версия 1.0.0
Версия 1.0.0
5 марта 2019
Это стабильный релиз Workmanager 1.0.0. Эта версия Workmanager идентична 1.0.0-RC02.
Версия 1.0.0-RC02
21 февраля 2019 г.
Это второй релиз кандидата на стабильный релиз Workmanager 1.0.0. Этот релиз содержит два исправления ошибок.
Исправления ошибок
WorkerS теперь правильно запланированы после сбоя приложения. B/124546316Worker, которые бросают неконтролируемоеException, теперь правильно обозначены какFAILEDи больше не сбивают процесс приложения.
Версия 1.0.0-RC01
14 февраля 2019 года
Это кандидат в релиз для стабильного релиза Workmanager 1.0.0. Этот релиз содержит одно исправление ошибки.
Исправления ошибок
- Реализация на основе AlarmManager теперь правильно уважает
flexWindows для периодических пищи. б/124274584
Версия 1.0.0-бета05
6 февраля 2019 г.
Этот релиз содержит некоторые исправления ошибок.
Исправления ошибок
- Исправлено случай, когда
JobScheduler.getPendingJob(...)использовался в API 23. B/123893059 - Fixed a
NullPointerExceptionon devices running Android 5.1 (API level 22) or lower. b/123835104
Version 1.0.0-beta04
February 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.
Version 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.
Version 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
Version 1.0.0-beta01
December 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
December 12, 2018
This release contains a minor API change that will be helpful for some Kotlin users.
API Changes
-
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.
Version 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 Changes
- 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.
Version 1.0.0-alpha11
November 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 Changes
-
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.
Version 1.0.0-alpha10
October 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 Changes
- 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.
Version 1.0.0-alpha09
19 сентября 2018 г.
Известная проблема
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' } }
Котлин
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 Changes
- 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.
Version 1.0.0-alpha08
August 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
Version 1.0.0-alpha07
August 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 Changes
-
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.
Version 1.0.0-alpha06
August 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
Version 1.0.0-alpha05
July 24, 2018
API Changes
-
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[]).
Version 1.0.0-alpha04
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.
Version 1.0.0-alpha03
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 Changes
- 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.
Version 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 Changes
-
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.
Version 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 .