Менеджер работ
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
2 октября 2024 г. | 2.9.1 | - | 2.10.0-бета01 | - |
Объявление зависимостей
Чтобы добавить зависимость от WorkManager, вам необходимо добавить в свой проект репозиторий Google Maven :
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
классный
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Котлин
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Информацию об использовании расширений Kotlin смотрите в документации ktx .
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Дополнительную информацию см . в документации по системе отслеживания проблем .
Версия 2.10
Версия 2.10.0-бета01
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», поскольку они будут содержать имя выполняемого работника. Разделы трассировки также добавляются вокруг ключевых областейWorkManager
.
Изменения API
- WorkManager 2.10.0 теперь скомпилирован с SDK 35.
- Исправлена ошибка, из-за которой рабочие переднего плана типа «короткое обслуживание» и «синхронизация данных» теряли время и вызывали ошибку ANR, когда
WorkManager
не вызывалstopSelf()
. Это исправление применимо только к устройствам с API 34 и 35, где были представлены типы приоритетных служб. ( ca06b2 , б/364508145 ) - Новые API-интерфейсы
WorkerParameters
, которые позволяют переключать удаленный процесс, к которому привязываетсяWorker
при использованииWorkerFactory
. ( Ibdc8a , Ie8a90 , I7373f )
Исправления ошибок
- Исправлен сбой, вызванный попыткой
WorkManager
перезапустить долго работающего работника (т. е. работника переднего плана), когда у переднего типа работы были необходимые разрешения Android 14, которые были отозваны. ( б/333957914 ) - Убрано ручное определение доступа к API новой платформы, поскольку это происходит автоматически посредством моделирования API при использовании R8 с AGP 7.3 или новее (например, R8 версии 3.3) и для всех сборок при использовании AGP 8.1 или новее (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется выполнить обновление до D8 версии 8.1 или более поздней. Более подробную информацию можно найти в этой статье . ( Ia60e0 , б/345472586 )
Версия 2.10.0-альфа02
17 апреля 2024 г.
Выпущен androidx.work:work-*:2.10.0-alpha02
. Версия 2.10.0-alpha02 содержит эти коммиты .
Изменения API
- Добавлена возможность генерировать диапазоны трассировки через настраиваемый
@RestrictTo
Tracer
вWorkManager
. ( I17d7f , б/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. Это может потребовать внесения изменений в исходный код клиентов, если предположения об обнуляемости в этом коде окажутся неверными. ( Если6757 )
Версия 2.10.0-альфа01
24 января 2024 г.
Выпущен androidx.work:work-*:2.10.0-alpha01
. Версия 2.10.0-alpha01 содержит эти коммиты.
Новые возможности
- Разработчики могут указать
NetworkRequest
в качестве ограничения для работника с помощью методаConstraints.setRequiredNetworkRequest
. Это обеспечивает более детальный контроль над тем, в какой сети должен работать этот исполнитель.
Изменения API
- Добавление возможности указывать
NetworkRequest
в качестве ограничения. ( Id98a1 , б/280634452 )
Версия 2.9
Версия 2.9.1
7 августа 2024 г.
Выпущен androidx.work:work-*:2.9.1
. Версия 2.9.1 содержит эти коммиты .
Исправления ошибок
- Исправлен сбой, вызванный попыткой
WorkManager
перезапустить долго работающего работника (т. е. работника переднего плана), когда у переднего типа работы были необходимые разрешения Android 14 , которые были отозваны. ( б/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-интерфейсы Coroutines, такие как
CoroutineWorker
были перемещены из дополнительной среды выполнения артефакта в рабочую среду выполнения основного артефакта. work-runtime-ktx теперь пуст.
Изменения API
-
stopReason
был добавлен вWorkInfo
. Это делаетstopReason
доступным после запуска работника. Это могло бы быть полезно при составлении отчетаstopReason
в удобной для использования форме, потому что как только рабочий процесс был остановлен, само приложение может быть закрыто очень быстро. ( I21386 ) - Разрешить настройку
Clock
через конфигурацию и использование для управления последовательностью выполнения тестов Worker. ( Ic586e ) - В
ListenableWorker
был добавлен методgetStopReason()
, который подсказывает, почему рабочий процесс был остановлен. ( I07060 ) - Добавлен
WorkManagerTestInitHelper#closeWorkDatabase()
чтобы избежать предупреждения Closeguard об утечке ресурсов. ( Ia8d49 ) - Конструктор
WorkInfo
теперь общедоступен, что может быть полезно при тестировании. ( Ia00b6 , б/209145335 ) -
work-runtime-ktx
теперь пуст,CoroutineWorker
и другие специфичные для Kotlin утилиты теперь доступны в основном артефакте среды выполнения. ( I71a9a ) - Добавлен метод
setNextScheduleTimeOverride
, позволяющий точно настроить периодические графики работы ( I3b4da ). - В
WorkInfo
добавлен методgetNextScheduleTimeMillis
для получения информации о запланированном времени выполнения. ( I797e4 ) - Информация о начальной задержке и периодичности добавляется в
WorkInfo
. ( I52f2f ) - Добавлен метод наблюдения за работниками через потоки с помощью методов
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
( If122a ). - Добавлены отсутствующие аннотации
@RequiresApi(...)
к конструкторам и свойствамConstraints
. Теперь они приведены в соответствие с соответствующими аннотациями к установщикам вConstraints.Builder
, которые существовали в ранних версияхWorkManager
. ( I6d7d2 ) -
WorkManager
теперь имеет отдельный лимит для работников URI контента, чтобы предоставить им гарантированные слоты вJobScheduler
, чтобы предотвратить пропуск обновлений контента при высокой нагрузке. Ограничение можно настроить с помощьюConfiguration.Builder.setContentUriTriggerWorkersLimit
. ( Ic128f ) - Ограничения добавляются в
WorkInfo
. ( я162c0 )
Версия 2.9.0-rc01
18 октября 2023 г.
androidx.work:work-*:2.9.0-rc01
выпущен. Версия 2.9.0-rc01 содержит эти коммиты.
- Никаких изменений с момента последней бета-версии
Версия 2.9.0-бета01
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
-
stopReason
был добавлен вWorkInfo
. Он делает доступнымstopReason
после запуска работника. Это могло бы быть полезно при составлении отчетаstopReason
в удобном для использования виде, потому что как только рабочий процесс был остановлен, само приложение может быть очень быстро закрыто. ( I21386 ) - Разрешить настройку Clock через конфигурацию и использование для управления последовательностью выполнения тестов 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-интерфейсы Coroutines, такие как
CoroutineWorker
были перенесены из дополнительного артефактаwork-runtime-ktx
в основной артефактwork-runtime
.work-runtime-ktx
теперь пуст.
Изменения API
- Конструктор
WorkInfo
теперь общедоступен, что может быть полезно при тестировании. ( Ia00b6 , б/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
. ( я162c0 )
Версия 2.8
Версия 2.8.1
22 марта 2023 г.
androidx.work:work-*:2.8.1
выпущен. Версия 2.8.1 содержит эти коммиты.
Исправления ошибок
- Исправлен ANR в
RescheduleReceiver
, который ранее неправильно обрабатывал две одновременные широковещательные передачи. ( б / 236906724 )
Версия 2.8.0
8 февраля 2023 г.
Выпущен androidx.work:work-*:2.8.0
. Версия 2.8.0 содержит эти коммиты.
Важные изменения с версии 2.7.0
Новые возможности
- Была добавлена возможность обновлять
WorkRequests
ненавязчивым способом, сохраняя исходное время постановки в очередь, цепочку и т. д. Подробную информацию см. в блоге об этой функции, а также в документации Java дляWorkManager.updateWork
иExistingPeriodicWorkPolicy.UPDATE
.
Изменения API
-
WorkManager.updateWork
был добавлен для обновления работы, сохраняя исходное время постановки в очередь и цепочку. ( I9a248 , b/219446409 ). - Добавлен
ExistingPeriodicWorkPolicy.UPDATE
. Эта политика позволяет периодически обновлять произведение по названию. Он похож на существующийREPLACE
, но менее навязчив: он не отменяет рабочий процесс, если он в данный момент работает, и сохраняет время постановки в очередь — начальная задержка и период рассчитываются на основе исходного времени постановки в очередь, а не времени обновления.REPLACE
устарел, чтобы уменьшить путаницу междуREPLACE
иUPDATE
с очень похожими названиями. Если вы все еще хотите сохранить предыдущую семантикуREPLACE
, можно использовать недавно добавленныйCANCEL_AND_REENQUEUE
, который идентиченREPLACE
. ( I985ed , р/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
. ( б / 199919736 ) ( If48f2 , б / 199919736 ) - Добавлен
getForegroundInfo
вWorker
. ( Ic1head ) -
RxWorker
для RxJava 2 и RxJava 3 теперь имеетsetForeground
возвращающийCompletable
, который можно использовать вместоsetForegroundInfoAsync
, который возвращаетListenableFuture
-
RxWorker
как для RxJava 2, так и для RxJava 3 имеетgetForegroundInfo
возвращающийSingle
, который можно использовать вместоgetForegroundInfoAsync
, который возвращаетListenableFuture
. ( б / 203851459 ) - Ограничения теперь можно создавать напрямую, а не с помощью
Constraints.Builder
, что удобно для пользователей Kotlin. ( Idc390 , б/137568653 ) - Добавлена возможность проверить, был ли инициализирован
WorkManager
. Кроме того, добавлен новый APIgetConfiguration()
для разработчиков библиотек, позволяющий получить конфигурацию, с которой был инициализированWorkManager
. ( I6eff3 , б/212300336 )
Исправления ошибок
- Исправлена проблема с жадным планировщиком, из-за которой рабочие процессы не запускались немедленно при нагрузке. ( I9686b , б/248111307 )
- Добавлен
@RequiresPermission
для API, требующих предоставления разрешенияPOST_NOTIFICATIONS
в SDK 33 и более поздних версиях. ( Ie542e , б/238790278 ) - Распространите отмены из
CoroutineScope
вListenableFuture
при использованииsuspendCancellableCoroutine
.
Версия 2.8.0-rc01
7 декабря 2022 г.
androidx.work:work-*:2.8.0-rc01
выпущен. Версия 2.8.0-rc01 содержит эти коммиты.
Новые возможности
- В этом выпуске нет новых функций. В основном это обновление версии
Версия 2.8.0-бета02
9 ноября 2022 г.
Выпущен androidx.work:work-*:2.8.0-beta02
. Версия 2.8.0-beta02 содержит эти коммиты.
Исправления ошибок
- Исправлен метод
equals
вWorkInfo
, который ранее не учитывал информацию нового поколения. ( 4977cc )
Версия 2.8.0-бета01
5 октября 2022 г.
androidx.work:work-*:2.8.0-beta01
выпущен. Версия 2.8.0-beta01 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема с жадным планировщиком, из-за которой рабочие процессы не запускались немедленно при нагрузке. ( I9686b , б/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 , б / 219446409 ) ( I128a9 , б / 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
. ( I985ed , р/219446409 ) - Добавьте возможность перехватывать исключения планирования, определив
SchedulingExceptionHandler
. ( I033eb ) - Встроенные помощники для
OneTimeWorkRequest
иPeriodicWorkRequest
были перенесены изandroidx.work:work-runtime-ktx
вandroidx.work:work-runtime
( I0010f , b/209145335 ).
Исправления ошибок
- Добавлен
@RequiresPermission
для API, требующих предоставления разрешения POST_NOTIFICATIONS в SDK 33 и более поздних версиях. ( Ie542e , б/238790278 )
Версия 2.8.0-альфа02
6 апреля 2022 г.
Выпущен androidx.work:work-*:2.8.0-alpha02
. Версия 2.8.0-alpha02 содержит эти коммиты.
Изменения API
- Ограничения теперь можно создавать напрямую, а не с помощью Builder, что удобно для пользователей Kotlin. ( Idc390 , б/137568653 )
- Добавлена возможность проверить, был ли инициализирован
WorkManager
. Кроме того, добавлен новый APIgetConfiguration()
для разработчиков библиотек, позволяющий получить конфигурацию, с которой был инициализированWorkManager
. ( I6eff3 , б/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 , б/199919736 ) - Добавляет экспериментальные методы BuildCompat для будущих SDK ( Iafd82 , b/207528937 ).
- Добавьте
getForegroundInfo
вWorker
. ( Ic1head ) - Добавлены вспомогательные методы
WorkQuery.fromIds
для создания WorkQuery непосредственно из идентификаторов. ( Ie5bdf , р/199919736 ) - RxWorker теперь имеет
setForeground
возвращающийCompletable
, который можно использовать вместоsetForegroundInfoAsync
, который возвращаетListenableFuture
. ( I85156 ) - RxWorker для RxJava 2 теперь имеет
getForegroundInfo
возвращающийSingle
, который можно использовать вместоgetForegroundInfoAsync
, который возвращаетListenableFuture
. ( I21c91 , б/203851459 ) - RxWorker для RxJava 3 теперь имеет
getForegroundInfo
возвращающийSingle
, который можно использовать вместоgetForegroundInfoAsync
, который возвращаетListenableFuture
. ( I1ca8a ) - RxWorker теперь имеет
setForeground
возвращающийCompletable
, который можно использовать вместоsetForegroundInfoAsync
, который возвращаетListenableFuture
. ( I992a3 , б/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(...)
помогающий справиться с ограничениями службы переднего плана в 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-бета01
1 сентября 2021 г.
androidx.work:work-*:2.7.0-beta01
выпущен. Версия 2.7.0-beta01 содержит эти коммиты.
Новые возможности
- Уменьшите конфликты между несколькими процессами SQLite при инициализации WorkManager.
Изменения API
- Удалите API
@ExperimentalExpeditedWork
, поскольку API базовой платформы для Android 12 (S) стабильны. ( аосп/1792806 )
Исправления ошибок
- Предоставьте лучшее сообщение об ошибке для ускоренных работников, которые не реализуют
getForegroundInfoAsync()
. ( аосп/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()
больше не устарел. - Мы рекомендуем использовать
WorkRequest.Builder.setExpedited(...)
API, когда это возможно. Чтобы лучше поддерживать ситуации, когда приложение не подпадает под ограничения служб переднего плана , разработчики могут использовать 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
: добавлена поддержка воркеров, которые могут работать в любом процессе. ( Иаф200 )Из 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" />
Добавлена поддержка воркеров, которые могут работать в любом процессе. ( Иаф200 )
Добавлен
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-бета02
21 июля 2021 г.
Выпущен androidx.work:work-*:2.6.0-beta02
. Версия 2.6.0-beta02 содержит эти коммиты.
Исправления ошибок
-
RemoteWorkManager
теперь корректно отсоединяется отRemoteWorkManagerService
, что позволяетRemoteWorkManagerService
правильно выполнить очистку. аосп/1730694 -
RemoteListenableWorker
теперь корректно отсоединяется отRemoteWorkerService
, что позволяетRemoteWorkerService
правильно выполнить очистку. аосп/1743817 -
ForceStopRunnable
теперь работает только в основном процессе приложения. Это оптимизация, позволяющая избежать конкуренции за ресурсы для приложений, использующих несколько процессов. аосп/1749180 , аосп/1761729
Версия 2.6.0-бета01
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 содержит эти коммиты.
Новые возможности
Добавляет поддержку воркеров, которые могут работать в любом процессе. ( Иаф200 )
Добавлен
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
. ( аосп/1608813 )Если вы использовали
tools:node="remove"
ContentProvider
который использовался для инициализации жизненного цикла процесса в прошлом, вместо этого вам необходимо сделать следующее.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(или)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Изменения API
- Добавьте API
Result.getOutputData()
, который возвращаетoutputData
ListenableWorker. ( Ie51e3 )
Исправления ошибок
- Добавьте обходной путь для ошибки OEM, которая приводит к созданию исключения
SecurityException
при использовании APIAlarmManager
. ( аосп/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
s. RemoteWorkManager всегда обращается к назначенному процессу. Внутрипроцессный планировщик также запускается в назначенном процессе.
- Чтобы использовать
- Иногда
ActivityManager
не может создать экземплярJobService
для запуска задания. Это приводит к тому, что базовое задание автоматически прекращается из-за ошибки платформы.WorkManager
теперь гарантирует наличие резервных заданий для каждого отдельногоWorkRequest
при инициализацииApplication
путем согласования заданий. Это значительно повышает надежность выполнения работ. ( б/172475041 , аосп/1489577 ) -
WorkManager
ограничивает рост базы данных за счет сокращения продолжительности буфера, который отслеживаетсяWorkRequest
после завершенияWorkRequest
. Ранее срок был7
дней. Он был сокращен до1
дня + продолжительность KeepResultsForAtLeast . ( аосп/1419708 ) -
TestListenableWorkerBuilder
теперь поддерживает конкретизированный класс, расширяющийListenableWorker
чтобы упростить тестирование. ( аосп/1443299 , б/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
. ( аосп/1540566 , б/173769028 ) - Исправлена ошибка, из-за которой транзакции базы данных в некоторых редких случаях не отмечались как успешные. Это вызывает проблемы на некоторых устройствах Motorola. ( аосп/1535368 , б/175944460 )
- Исправлена ошибка игнорирования
NoSuchElementException
при попытке отвязаться от мертвого процесса. ( аосп/1530589 ) - Улучшите
ConstraintTrackingWorker
, чтобы он останавливалListenableWorker
только в том случае, если он еще не был остановлен. ( аосп/1496844 , б/172946965 ) - Обновите библиотеки androidx.work для поддержки Java 8 ( Ibd2f2 ).
Версия 2.5.0-бета02
2 декабря 2020 г.
Выпущен androidx.work:work-*:2.5.0-beta02
. Версия 2.5.0-beta02 содержит эти коммиты.
Исправления ошибок
- Исправлена ошибка в
androidx.work:work-multiprocess
, из-за которой WorkManager случайно блокировал вызывающий поток при попытке привязаться к назначенному процессу. ( аосп/1475538 ) - Исправлена ошибка, из-за которой
PeriodicWorkRequest
не согласовывались правильно. ( б/172475041 , аосп/1489577 ) - Добавлен обходной путь для ошибки платформы при остановке службы переднего плана при использовании API-интерфейсов
setForeground*
. ( б/170924044 , аосп/1489901 )
Версия 2.5.0-бета01
28 октября 2020 г.
Выпущен androidx.work:work-*:2.5.0-beta01
. Версия 2.5.0-beta01 содержит эти коммиты.
Новые возможности
-
WorkManager
автоматически регулирует количествоWorkRequest
, которое может быть обработано внутрипроцессным планировщиком. Запросы по-прежнему выполняются в порядке FIFO. ( аосп/1455228 ) -
WorkManager
пытается выполнить восстановление, если хранилище данных приложения находится в плохом состоянии. ( аосп/1463103 )
Исправления ошибок
- Когда
ListenableWorker
прерывается, немедленно пометьте ихENQUEUED
, чтобы их можно было впоследствии перепланировать. ( аосп/1455618 , б/170273988 )
Версия 2.5.0-альфа03
14 октября 2020 г.
Выпущен androidx.work:work-*:2.5.0-alpha03
. Версия 2.5.0-alpha03 содержит эти коммиты.
Изменения API
-
TestListenableWorkerBuilder
иTestWorkerBuilder
не используют необработанные типы. ( I883ad , б/169787349 )
Исправления ошибок
- Используйте
ApplicationInfo
, чтобы определить имя процесса приложения по умолчанию. ( б/168716641 , аосп/1429950 ) - Исправьте правила видимости для
RemoteWorkManager
иRemoteWorkContinuation
. Эти API больше не помечаются как@Restricted
. ( аосп/1432091 ) - Исправьте правила proguard для
:work:work-multiprocess
. ( аосп/1432091 ) - Улучшите жизненные циклы уведомлений для длительной работы, привязанной к приоритетной службе. ( б/168502234 , аосп/1431331 )
Версия 2.5.0-альфа02
16 сентября 2020 г.
Выпущен androidx.work:work-*:2.5.0-alpha02
. Версия 2.5.0-alpha02 содержит эти коммиты.
Новые возможности
- Добавьте API в WorkQuery, чтобы иметь возможность использовать
id
для запросаWorkInfo
. ( аосп/1412372 , б/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 теперь проактивно примиряет рабочие места, поэтому рабочие места
WorkRequest
S и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
в будущем. Следите за обновлениями.
Исправления ошибок
- Обработайте
SecurityException
S при отслеживании состояния сети на некоторых устройствах. ( 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
- Планировщик
WorkManager
S теперь более способен. Раньше,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, которые обеспечивают соблюдение:
- Использование
setForegroundAsync()
foregroundServiceType
. ( B/147873061 , 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,0-бета-бита01. Версия 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.Builder
Factory MethodswithStates
,withTags
иwithUniqueWorkNames
были переименованы вfromStates
,fromTags
иfromUniqueWorkNames
соответственно. ( AOSP/1280287 )
Исправления ошибок
- Игнорировать
SecurityException
S при отслеживании сети состояния устройства. ( B/153246136 , AOSP/1280813 )
Версия 2.4.0-Alpha02
1 апреля 2020 года
androidx.work:work-*:2.4.0-alpha02
выпускается. Версия 2.4.0-Alpha02 содержит эти коммиты.
Новые возможности
- Добавлено новое правило Lint, которое предупреждает, когда
WorkRequest
S требует как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 содержит эти коммиты.
Новые возможности
Планировщик
WorkManager
S теперь более способен. Раньше, планировщик в процессе процесса рассматривал только выполнение работы, которая не была задержана и чьи ограничения были достигнуты. Теперь в процессе планировщика отслеживает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, которые обеспечивают соблюдение:
- Использование
setForegroundAsync()
foregroundServiceType
. ( B/147873061 , 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 содержит эти коммиты .
Исправления ошибок
- Лучше управлять жизненным циклом
Notification
S для давнихWorker
, которые работают, когда активенService
переднего плана. ( AOSP/1218539 , B/147249312 ) -
WorkManager
теперь зависит отandroidx.sqlite:sqlite-framework:2.1.0
стабильная. ( AOSP/1217729 ) - Добавлены правила Lint, чтобы гарантировать, что в
AndroidManifest.xml
указанForegroundInfo
foregroundServiceType
foregroundServiceType
( 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 )
- Исправлена ошибка, в которой пустой список
WorkRequest
Sportquest приведет к созданию неверной цепочки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, который позволяет легко отменитьWorkRequest
S без необходимости зарегистрировать другой компонент вAndroidManifest.xml
. Этот API делает особенно легко отменитьWorkRequest
S отNotification
S. Мы ожидаем, что это будет в сочетании с новыми 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 меняется
-
containsKey
API в данных в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()
. Также добавлено соответствующий APIsuspend
setProgress
-ING вCoroutineWorker
иsetProgress
вRxWorker
, который возвращаетSingle<Void>
. С этими новыми APIS работники могут передавать информацию о прогрессе черезWorkInfo
, который имеет соответствующий APIgetProgress
. ( B/79481554 ) -
Data
имеют APIcontainsKey()
, который можно использовать для проверки этих входных данных дляWorker
S, имеет ключи с ожидаемым типом. ( 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 )
Исправления ошибок
- Планировщик в процессе перепроцесса теперь игнорирует
WorkRequest
S с ограничением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.gradle
kotlinOptions { 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 - Добавлена возможность делегировать в один или несколько зарегистрированных
WorkerFactory
S с использованием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 - Исправлена ошибка, которая вызвала дрейфы в окнах выполнения для
WorkRequest
S из -за смерти процесса. 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Добавлена возможность делегировать в один или несколько зарегистрированных
WorkerFactory
S с использованиемDelegatingWorkerFactory
. B/131435993Добавлена возможность настроить
Executor
, используемого Workmanager для всех его внутренних книг с помощьюConfiguration.Builder.setTaskExecutor
.Улучшенная документация вокруг
WorkRequest.keepResultsForAtLeast
foratlest ( 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 - Обновленная документация для
PeriodicWorkRequest
S, чтобы указать, что время гибки не поддерживается на 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
Groovy
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. Этот релиз содержит два исправления ошибок.
Исправления ошибок
Worker
S теперь правильно запланированы после сбоя приложения. B/124546316Worker
, которые бросают неконтролируемоеException
, теперь правильно обозначены какFAILED
и больше не сбивают процесс приложения.
Версия 1.0.0-RC01
14 февраля 2019 г.
Это кандидат в релиз для стабильного релиза Workmanager 1.0.0. Этот релиз содержит одно исправление ошибки.
Исправления ошибок
- Реализация на основе AlarmManager теперь правильно уважает
flex
Windows для периодических пищи. б/124274584
Версия 1.0.0-бета05
6 февраля 2019 г.
Этот релиз содержит некоторые исправления ошибок.
Исправления ошибок
- Исправлено случай, когда
JobScheduler.getPendingJob(...)
использовался в API 23. B/123893059 - Исправлена
NullPointerException
на устройствах под управлением Android 5.1 (API -уровень 22) или ниже. б/123835104
Версия 1.0.0-бета04
4 февраля 2019 г.
Этот релиз содержит некоторые исправления ошибок.
Исправления ошибок
- Улучшено планирование периодической работы для реализации на основе AlarmManager.
- Исправлено случай, когда Workmanager не смог правильно отслеживать ограничения при использовании реализации на основе AlarmManager. б/123379508
- Исправлено случай, когда Workmanager не смог повторно работы по поводу смерти процесса при использовании реализации на основе Alartmanager. б/123329850
- Исправлена случай, который заставит Workmanager утечь Wakelocks при использовании реализации на основе AlarmManager.
Версия 1.0.0-бета03
25 января 2019 года
Этот релиз содержит некоторые исправления ошибок.
Исправления ошибок
- Мы представили регрессию
1.0.0-beta02
, которая заставляла работу не выполнять должным образом в некоторых ситуациях. B/123211993 - Исправлено случай, когда работа не была должным образом чести время отключения. б/122881597
- Исправлено
ConcurrentModificationException
на устройствах под управлением Android 5.1 (API или) или ниже. Это продолжение исправления в1.0.0-beta02
. б/121345393 - Добавлен
exported=false
для некоторых компонентов в нашем манифесте, которые пропустили эту аннотацию. - Включил информацию о том, как Workmanager взаимодействует с ОС в документации на уровне пакета.
Версия 1.0.0-бета02
15 января 2019 года
Этот релиз содержит некоторые исправления ошибок.
Исправления ошибок
- Исправлено случай края, когда периодическая работа могла работать более одного раза на интервал на устройствах, работающих на Android 6.0 (уровень API 23). B/121998363
- Исправлена
ConcurrentModificationException
на устройствах под управлением Android 5.1 (API -уровень 22) или ниже. б/121345393 - Исправлено ошибочное выполнение работы, когда ограничения не выполняются на устройствах под управлением Android 5.1 (уровень API 22) или ниже. B/122578012
- Оптимизированная работа по выполнению работы будет быстрее в некоторых краевых случаях. B/122358129
- Добавлено изменение для решения потенциальных условий гонки среди множества случаев
LiveData
, которые использует Workmanager. - Перемещен для использования
Room
зависимости1.1.1
вместо1.1.1-rc01
; Эти версии идентичны. б/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
-
androidx.work.Result
has been moved to be an inner class ofListenableWorker
. This prevents refactoring conflicts with Kotlin's top-levelResult
class. This is a breaking API change. b/120564418
Breaking API Changes
-
androidx.work.Result
has been moved to be an inner class ofListenableWorker
.
Version 1.0.0-alpha12
5 декабря 2018 г.
This release contains some breaking API changes; please see the Breaking API Changes section below. This version is likely to be released as our first beta. alpha12
also contains extensive documentation updates.
Изменения API
- A new artifact,
work-rxjava2
, introducesRxWorker
. This is aListenableWorker
that expects aSingle<Payload>
. - Support for Firebase JobDispatcher has been removed because of its impending deprecation. This means that the
work-firebase
artifact will no longer be updated as we head into beta. We will be looking into adding an alternative in the future. - Combined
Payload
intoResult
.Result
is now a "sealed class" with three concrete implementations, which you can obtain viaResult.success()
(orResult.success(Data)
),Result.failure()
(orResult.failure(Data)
), andResult.retry()
. YourListenableFuture
s now resultResult
instead ofPayload
.Worker
s 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
ContentUriTriggers
class 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
, andOneTimeWorkRequest
to 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 existingcombine
methods 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.
-
LiveData
that is observed viaobserveForever
is 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 aWorkInfo
with theCANCELLED
State
duringListenableWorker.onStopped()
. - Treat
null
Result
s 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-firebase
artifact will no longer be updated as we head into beta. We will be looking into adding an alternative in the future. - Combined
Payload
intoResult
.Result
is now a "sealed class" with three concrete implementations, which you can obtain viaResult.success()
(orResult.success(Data)
),Result.failure()
(orResult.failure(Data)
), andResult.retry()
. YourListenableFuture
s now resultResult
instead ofPayload
.Worker
s don't have getter and setter methods for outputData
. - Added
Operation.await()
andListenableFuture.await()
Kotlin extension methods. - Renamed
Operation.getException()
toOperation.getThrowable()
. - The
ContentUriTriggers
class and methods referencing it are no longer available for public usage. - Removed the rest of the varargs methods in
WorkManager
,WorkContinuation
, andOneTimeWorkRequest
to 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 existingcombine
methods are more understandable.
Version 1.0.0-alpha11
8 ноября 2018 г.
This release contains many changes that will become stable API at beta
. There are breaking API changes in this release; please see the Breaking API Changes section below.
Изменения API
-
work-runtime-ktx
introduces a newCoroutineWorker
. -
WorkStatus
has been renamed toWorkInfo
. All correspondinggetStatus
method variants have been renamed to the correspondinggetWorkInfo
variants. This is a breaking change. -
ListenableWorker.onStopped()
no longer accepts has a boolean argument representing if theWorkRequest
was cancelled.WorkManager
no longer makes this distinction. This is a breaking change. -
androidx.work.test
package has been renamed toandroidx.work.testing
package. This is a breaking change. - Setters on
Constraints
are 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
WorkStatus
is 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
@NonNull
annotations to the public API to improve ergonomics of the API. - Add
WorkManager.enqueueUniqueWork()
API to enqueue uniqueOneTimeWorkRequest
s without having to create aWorkContinuation
. - All variants of
enqueue
andcancel
methods onWorkManager
now return a newOperation
type. This is a breaking change. - All variants of
enqueue
no longer accept varargs forWorkRequest
s. 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
initialize
WorkManager
more than once per process will now result in anIllegalStateException
. This is a breaking change.
Исправления ошибок
-
WorkRequest.Builder
s in thework-runtime-ktx
artifact now useListenableWorker
s. Fixes b/117666259 - Ensure the next run time for
PeriodicWork
is 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
-
WorkStatus
has been renamed toWorkInfo
. All correspondinggetStatus
method variants have been renamed to the correspondinggetWorkInfo
variants. -
ListenableWorker.onStopped()
no longer accepts has a boolean argument representing if theWorkRequest
was cancelled.WorkManager
no longer makes this distinction. -
androidx.work.test
package has been renamed toandroidx.work.testing
package. - Setters on
Constraints
are 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
WorkStatus
is no longer a part of the public API. -
Configuration.getMaxJobSchedulerID()
andConfiguration.getMinJobSchedulerID()
are renamed toConfiguration.getMinJobSchedulerId()
andConfiguration.getMaxJobSchedulerId()
respectively. - All variants of
enqueue
andcancel
methods onWorkManager
now return a newOperation
type. - All variants of
enqueue
no longer accept varargs forWorkRequest
s. - Attempting to
initialize
WorkManager
more than once per process will now result in anIllegalStateException
.
Version 1.0.0-alpha10
11 октября 2018 г.
This release supports developer-controlled asynchronous work. There are breaking API changes in this release; please see the Breaking API Changes section below.
We anticipate that WorkManager is entering the final phases of its alpha period. We expect to be API stable in beta, so please take some time to file your feedback on our issue tracker.
Изменения API
- Removed all previously
deprecated
methods and classes, notably the defaultWorker
constructor. This is a breaking API change. - Renamed
NonBlockingWorker
toListenableWorker
, which is now an unhidden public class and ready for usage.-
ListenableWorker
provides 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 theListenableFuture
appropriately. Reference implementations ofListenableFuture
s are provided in theFutures
package inalpha02
(see below theWorkManager
section). -
Worker
extendsListenableWorker
and still operates as before, with an abstractResult doWork()
method. - Shuffled some methods and members from
Worker
toListenableWorker
. - We shall soon provide reference implementations for
ListenableWorker
s that use Kotlin coroutines (once the stable versions are released) and RxJava2.
-
- The interface
WorkerFactory
and the concrete implementationDefaultWorkerFactory
have 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-createdWorkerFactory
instances. 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
ListenableFuture
s. 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
ListenableFuture
s 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 theFuture
s contract. - To maintain parity with the synchronous
getStatus*
methods, we have providedListenableFuture
variants, and renamed the existing ones that returnedLiveData
to 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.pro
files. 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
Worker
constructor. b/116296569 - Fix potential
NullPointerException
in a race condition where work wasREPLACE
d. b/116253486 and b/116677275 -
WorkContinuation.combine()
now accepts one or moreWorkContinuation
s instead of two or more. b/117266752
Breaking API Changes
- Removed all previously
deprecated
methods and classes, notably the defaultWorker
constructor. - The interface
WorkerFactory
and the concrete implementationDefaultWorkerFactory
have been merged into an abstract class calledWorkerFactory
. - Removed
WorkManager.synchronous()
andWorkContinuation.synchronous()
. -
WorkManager.getStatus*()
methods now returnListenableFuture
s.WorkManager.getStatus*LiveData()
returnLiveData
s.
Версия 1.0.0-альфа09
19 сентября 2018 г.
Known Issue
If you run into the following issue: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'", please put the following in your gradle file as a temporary workaround while we fix the issue in alpha10:
Groovy
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
LiveData
internally.
Изменения API
- You can now create your own
Worker
instances at runtime by specifying aWorkerFactory
as part of theWorkManager.Configuration
. The fallback factory isDefaultWorkerFactory
, which matches behavior of previous versions of WorkManager.- The default constructors for
Worker
andNonBlockingWorker
are 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
ListenableFuture
artifact 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
TestDriver
viaTestDriver.setInitialDelayMet(UUID)
andTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Критические изменения
- The default
Worker
andNonBlockingWorker
constructors are deprecated. Please migrate to the new constructor ASAP. Future versions will remove the default constructor.
Версия 1.0.0-альфа08
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
Data
to indicate the limit is 10KB. - Lowered maximum value of
Configuration.setMaxSchedulerLimit(int)
to 50 to account for some latency inJobScheduler
processing completion. b/112817355
Версия 1.0.0-альфа07
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
JobScheduler
jobs limit. b/111569265 - Fixed a
ConcurrentModificationException
inConstraintTracker
. b/112272753 - Changed return type annotations of
Data.getBooleanArray(String)
andData.getIntArray(String)
to@Nullable
instead of@NonNull
. b/112275229
Изменения API
-
Worker
now extends a new class,NonBlockingWorker
. This does not affect any current usage. In the future,NonBlockingWorker
will become a fully supported entity for custom threading solutions. - Changed return type annotations of
Data.getBooleanArray(String)
andData.getIntArray(String)
to@Nullable
instead of@NonNull
. b/112275229 - Kotlin extensions: deprecated
Map.toWorkData()
and added a top-levelworkDataOf(vararg Pair<String, Any?>)
to be more consistent with existing APIs.
Версия 1.0.0-альфа06
August 1, 2018
Исправления ошибок
- Prevent a database lock when scheduling work. b/111801342
- Fix a bug which causes
PeriodicWork
to not run on schedule when in Doze mode. b/111469837 - Fix a race condition when tracking constraints which causes
WorkManager
to crash. googlecodelabs/android-workmanager/issues/56 - Create unique
WorkRequest
s when usingWorkRequest.Builder#build()
. b/111408337 - Enable the use of
RescheduleReceiver
only when there areWorkRequest
s that need it. b/111765853
Версия 1.0.0-альфа05
July 24, 2018
Изменения API
-
WorkManager.getInstance()
is now annotated with@NonNull
instead 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.INFO
and 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 theConstraints
constructor,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
PeriodicWorkRequest
s when usingJobScheduler
. b/110798652 - Fixed an issue with
PeriodicWorkRequest
s 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
BroadcastReceiver
s 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@NonNull
instead 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 theConstraints
constructor,Data.toByteArray()
, andData.fromByteArray(byte[])
.
Версия 1.0.0-альфа04
June 26, 2018
Исправления ошибок
-
PeriodicWorkRequest
s are now correctly rescheduled when using theAlarmManager
based implementation. - Fixed a potential ANR when rescheduling all workers after a force stop or a reboot. b/110507716
- Added nullability annotations to various WorkManager APIs. b/110344065
- Log uncaught exceptions that occur during Worker execution. b/109900862
- Allowed destructive database migrations in case you decide to roll back to an older version of WorkManager. b/74633270
- Fixed a migration crash if creating duplicate implicit tags. This is a very rare issue that occurred only if you used the same implicit tag format yourself.
Версия 1.0.0-альфа03
June 19, 2018
Исправления ошибок
Fixed a race condition in the
AlarmManager
based implementation. b/80346526 .Fixed duplicate jobs when using
JobScheduler
after 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-ktx
dependency.WorkManager now uses
Room
version1.1.1-rc1
.
Изменения API
- Added
getStatusesSync()
, the synchronous version ofWorkContinuation.getStatuses()
. -
Worker
has the ability to distinguish between user-initiated cancellation and temporary os-requested stopping.Worker.isStopped()
returnstrue
if any kind of stop has been requested.Worker.isCancelled()
returnstrue
when 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 toJobScheduler
orAlarmManager
. This helps preventWorkManager
from taking all your availableJobScheduler
slots. - Added
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
which helps define a range ofJobScheduler
job ids safe forWorkManager
to 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 uniquePeriodicWorkRequest
s. b/79600647 -
WorkManager.cancelAllWork()
cancels allWorker
s. Libraries that depend onWorkManager
can 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
Behavior Changes
- Added an implicit tag for all
WorkRequest
s, which is the fully qualified class name for theWorker
. This allows the ability to removeWorkRequest
s withouttag
s or when theid
is not available. b/109572351
Критические изменения
- Renamed
Worker.WorkerResult
toWorker.Result
. -
Worker.onStopped
now has an additionalisCancelled
parameter which is set totrue
when theWorker
has explicitly been cancelled.
Версия 1.0.0-альфа02
24 мая 2018 г.
Исправления ошибок
- Fixed a
NullPointerException
onState.isFinished()
. b/79550068 - Fixed an issue which caused
Worker
s 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
Worker
s to the background thread. - The
AlarmManager
implementation now correctly cleans up when all pending work is complete. - Fixed cleanup SQL queries which affected non-English locales. b/80065360
- Added support for
float
s inData
. b/79443878 -
Data.Builder.putAll()
now returns an instance of theBuilder
. b/79699162 - More javadoc and fixes in documentation. b/79691663
Изменения API
-
Worker
s can react to being stopped.Worker.isStopped()
can be used to check if aWorker
has been stopped.Worker.onStopped()
can be used to perform lightweight cleanup operations. -
Worker.getTags()
API returns aSet
of tags associated with theWorker
. - Added
javax.time.Duration
overloads for APIs which take a combination of duration andTimeUnit
s. This is guarded by@RequiresApi(26)
. -
WorkManager
extensions have moved from theandroidx.work.ktx
package to theandroidx.work
package. The old extensions are deprecated and will be removed in a future version. -
Configuration.withExecutor()
is deprecated. UseConfiguration.setExecutor()
instead.
Версия 1.0.0-альфа01
May 8, 2018
WorkManager simplifies scheduling and execution of guaranteed, constraint-aware background work. This initial release is 1.0.0-alpha01
.