WorkManager

WorkManager API упрощает планирование отложенных, асинхронных задач, которые должны выполняться надежно. Эти API позволяют вам создать задачу и передать ее WorkManager для выполнения при выполнении ограничений работы.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-релиз Альфа-релиз
18 июня 2025 г. 2.10.2 - - -

Объявление зависимостей

Чтобы добавить зависимость от WorkManager, необходимо добавить репозиторий Google Maven в свой проект:

Добавьте зависимости для необходимых артефактов в файл build.gradle для вашего приложения или модуля:

классный

dependencies {
    def work_version = "2.10.2"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

Котлин

dependencies {
    val work_version = "2.10.2"

    // (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 лучше. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новый выпуск

Более подробную информацию смотрите в документации Issue Tracker .

Версия 2.10

Версия 2.10.2

18 июня 2025 г.

Выпущен androidx.work:work-*:2.10.2 . Версия 2.10.2 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой при сохранении рабочих процессов с сетевыми запросами и возможностями по умолчанию удаляемые возможности повторно добавлялись, что приводило к неправильной работе рабочих процессов с сетевыми ограничениями. ( b/409716532 )
  • Исправлена ​​ошибка, из-за которой обработчики с сетевыми ограничениями не выполнялись быстро из-за невыполненных ограничений, даже если сеть и возможности были доступны. ( b/423403088 )

Версия 2.10.1

23 апреля 2025 г.

Выпущен androidx.work:work-*:2.10.1 . Версия 2.10.1 содержит эти коммиты .

Исправление ошибок

  • Уменьшить вероятность возникновения исключения TooManyRequestsException при регистрации WorkManager NetworkCallback , используемого для отслеживания ограничений. ( b/231499040 , b309d5 ).

Версия 2.10.0

30 октября 2024 г.

Выпущен androidx.work:work-*:2.10.0 . Версия 2.10.0 содержит эти коммиты .

Значительные изменения по сравнению с версией 2.9.1

  • Добавлены теги трассировки в Jobs из WorkManager , что делает 'adb shell dumpsys jobscheduler' намного проще для понимания, поскольку он будет содержать имя исполняемого Worker. Разделы трассировки также добавлены вокруг ключевых областей WorkManager .
  • Configuration.workerCoroutineContext был добавлен для управления диспетчером, в котором выполняется CoroutineWorker .
  • Разработчики могут указать NetworkRequest как ограничение для воркера через метод Constraints.setRequiredNetworkRequest . Это обеспечивает более детальный контроль над тем, какую сеть должен запустить этот воркер.
  • WorkManager 2.10.0 теперь скомпилирован с SDK 35 и содержит различные изменения для совместимости с SDK 35.

Версия 2.10.0-rc01

24 октября 2024 г.

Выпущен androidx.work:work-*:2.10.0-rc01 . Версия 2.10.0-rc01 содержит эти коммиты .

Версия 2.10.0-beta01

2 октября 2024 г.

Выпущен androidx.work:work-*:2.10.0-beta01 . Версия 2.10.0-beta01 содержит эти коммиты .

Версия 2.10.0-альфа04

18 сентября 2024 г.

Выпущен androidx.work:work-*:2.10.0-alpha04 . Версия 2.10.0-alpha04 содержит эти коммиты .

Изменения API

  • Добавьте причину остановки STOP_REASON_FOREGROUND_SERVICE_TIMEOUT для случаев, когда рабочий процесс переднего плана останавливается из-за истечения времени ожидания выполнения на основе типа службы переднего плана. ( Ibd0af )

Версия 2.10.0-альфа03

4 сентября 2024 г.

Выпущен androidx.work:work-*:2.10.0-alpha03 . Версия 2.10.0-alpha03 содержит эти коммиты .

Новые возможности

  • Добавлены теги трассировки в Jobs из WorkManager , что делает 'adb shell dumpsys jobscheduler' намного проще для понимания, поскольку он будет содержать имя исполняемого Worker. Разделы трассировки также добавлены вокруг ключевых областей WorkManager .

Изменения API

  • WorkManager 2.10.0 теперь скомпилирован с SDK 35.
  • Исправление тайм-аута рабочих процессов переднего плана типа «short service» и «data sync», приводившего к возникновению ANR, когда WorkManager не вызывал stopSelf() . Это исправление применимо только к устройствам с API 34 и 35, где были введены типы служб переднего плана. ( ca06b2 , b/364508145 )
  • Новые API WorkerParameters , которые позволяют переключать удаленный процесс, к которому привязывается Worker при использовании WorkerFactory . ( Ibdc8a , Ie8a90 , I7373f )

Исправление ошибок

  • Исправлен сбой, вызванный попыткой WorkManager перезапустить долго выполняющийся обработчик (т. е. обработчик переднего плана), когда у типа работы переднего плана были отозваны необходимые разрешения Android 14. ( b/333957914 )
  • Удалено ручное описание доступа к новым API платформы, поскольку это происходит автоматически через моделирование API при использовании R8 с AGP 7.3 или более поздней версии (например, R8 версии 3.3) и для всех сборок при использовании AGP 8.1 или более поздней версии (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется обновиться до D8 версии 8.1 или более поздней версии. Подробнее см. в этой статье . ( Ia60e0 , b/345472586 )

Версия 2.10.0-альфа02

17 апреля 2024 г.

Выпущен androidx.work:work-*:2.10.0-alpha02 . Версия 2.10.0-alpha02 содержит эти коммиты .

Изменения API

  • Добавлена ​​возможность выдавать интервалы трассировки через настраиваемый @RestrictTo Tracer в WorkManager . ( I17d7f , b/260214125 )
  • Configuration.workerCoroutineContext был добавлен для управления диспетчером, где выполняется CoroutineWorker . Это помогает полностью избежать использования Dispatchers.Default в WorkManager . ( Icd1b7 )
  • Добавить пользовательские обработчики исключений для Workers ( Ib1b74 , b/261190695 )
  • OneTimeWorkRequest.Builder и PeriodicWorkRequest.Builder теперь можно создавать с помощью KClass вместо Class : val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() ( Ib55f6 )
  • Класс WorkManager был перенесен в Kotlin. Теперь методы, возвращающие LiveData , ListenableFuture или Flow предоставляют правильную информацию о допустимости значений NULL. Это может потребовать внесения изменений в исходный код клиентов, если предположения о допустимости значений NULL в этом коде были неверными. ( If6757 )

Версия 2.10.0-альфа01

24 января 2024 г.

Выпущен androidx.work:work-*:2.10.0-alpha01 . Версия 2.10.0-alpha01 содержит эти коммиты.

Новые возможности

  • Разработчики могут указать NetworkRequest как ограничение для воркера через метод Constraints.setRequiredNetworkRequest . Это обеспечивает более детальный контроль над тем, какую сеть должен запустить этот воркер.

Изменения API

  • Добавление возможности указать NetworkRequest в качестве ограничения. ( Id98a1 , b/280634452 )

Версия 2.9

Версия 2.9.1

7 августа 2024 г.

Выпущен androidx.work:work-*:2.9.1 . Версия 2.9.1 содержит эти коммиты .

Исправление ошибок

  • Исправлен сбой, вызванный попыткой WorkManager перезапустить долго выполняющийся обработчик (т. е. обработчик переднего плана), когда у типа работы переднего плана были отозваны необходимые разрешения Android 14. ( b/333957914 )

Версия 2.9.0

29 ноября 2023 г.

Выпущен androidx.work:work-*:2.9.0 . Версия 2.9.0 содержит эти коммиты.

Важные изменения по сравнению с версией 2.8.0

  • Наблюдаемость через Flow -s. Вместо LiveData прогресс Worker теперь можно наблюдать через Flow с помощью WorkManager.getWorkInfosFlow и подобных методов.
  • Теперь WorkManager дает подсказку о том, почему воркер был ранее остановлен. Ее можно запросить у самого воркера с помощью метода getStopReason() или из WorkInfo с помощью getStopReason() .
  • Точное планирование периодических рабочих процессов через setNextScheduleTimeOverride . Это позволяет динамически рассчитывать следующий график периодических работ, который можно использовать для реализации расширенных функций, таких как адаптивное время обновления, настраиваемое поведение повтора или запуск рабочего процесса новостной ленты до того, как пользователь проснется каждое утро без смещения. ExistingPeriodicWorkPolicy.UPDATE следует использовать с этими методами, чтобы избежать отмены текущего рабочего процесса при планировании следующего.
  • Тестирование WorkManager с потоками, соответствующими производству. ExecutorsMode.PRESERVE_EXECUTORS можно использовать в initializeTestWorkManager для сохранения исполнителей, установленных в Configuration и для использования реального основного потока.
  • API сопрограмм, такие как CoroutineWorker были перемещены из дополнительного артефакта work-runtime-ktx в основной артефакт work-runtime. work-runtime-ktx теперь пуст.

Изменения API

  • stopReason был добавлен в WorkInfo . Он делает stopReason доступным после запуска воркера. Это может быть полезно для сообщения stopReason в удобном виде, поскольку после остановки воркера само приложение может быть очень быстро завершено. ( I21386 )
  • Разрешить установку Clock через конфигурацию и их использование для управления последовательностью выполнения тестов Worker. ( Ic586e )
  • В ListenableWorker добавлен метод getStopReason() , который дает подсказку о причине остановки рабочего процесса. ( I07060 )
  • Добавлен WorkManagerTestInitHelper#closeWorkDatabase() чтобы избежать предупреждения Closeguard об утечке ресурсов. ( Ia8d49 )
  • Конструктор WorkInfo теперь является публичным, что может быть полезно при тестировании. ( Ia00b6 , b/209145335 )
  • work-runtime-ktx теперь пуст, CoroutineWorker и другие специфичные для Kotlin утилиты теперь доступны в основном артефакте work-runtime. ( I71a9a )
  • Добавлен метод setNextScheduleTimeOverride , позволяющий точно устанавливать периодические графики работы ( I3b4da ).
  • Добавлен getNextScheduleTimeMillis для получения информации о запланированном времени выполнения, добавленной в WorkInfo . ( I797e4 )
  • Начальная информация о задержке и периодичности добавляется в WorkInfo . ( I52f2f )
  • Добавлен метод наблюдения за работниками через потоки с помощью методов getWorkInfosByTagFlow , getWorkInfoByIdFlow , getWorkInfosForUniqueWorkFlow , getWorkInfosFlow ( If122a )
  • Добавлены отсутствующие аннотации @RequiresApi(...) к конструкторам и свойствам Constraints . Теперь они согласованы с соответствующими аннотациями в сеттерах в Constraints.Builder , которые существовали в ранних версиях WorkManager . ( I6d7d2 )
  • WorkManager теперь имеет отдельный лимит для работников URI контента, чтобы предоставить им гарантированные слоты в JobScheduler для предотвращения пропуска обновлений контента при высокой нагрузке. Лимит можно настроить через Configuration.Builder.setContentUriTriggerWorkersLimit . ( Ic128f )
  • Ограничения добавляются в WorkInfo . ( I162c0 )

Версия 2.9.0-rc01

18 октября 2023 г.

Выпущен androidx.work:work-*:2.9.0-rc01 . Версия 2.9.0-rc01 содержит эти коммиты.

  • Никаких изменений с момента последнего бета-релиза.

Версия 2.9.0-beta01

6 сентября 2023 г.

Выпущен androidx.work:work-*:2.9.0-beta01 . Версия 2.9.0-beta01 содержит эти коммиты.

Изменения API

Версия 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 доступным после запуска worker. Это может быть полезно в отчетах stopReason в удобном виде, поскольку после остановки worker само приложение может быть очень быстро завершено. ( I21386 )
  • Разрешить установку часов через конфигурацию и их использование для управления последовательностью выполнения тестов Worker. ( Ic586e )
  • В ListenableWorker добавлен метод getStopReason() , который дает подсказку о причине остановки рабочего процесса. ( I07060 )
  • Добавлен WorkManagerTestInitHelper#closeWorkDatabase() чтобы избежать предупреждения Closeguard об утечке ресурсов. ( Ia8d49 )

Исправление ошибок

  • Добавлена ​​возможность обхода overrideNextScheduleTime с помощью TestDriver и исправлены проблемы с тестируемостью. ( Ic2905 )

Версия 2.9.0-альфа01

7 июня 2023 г.

Выпущен androidx.work:work-*:2.9.0-alpha01 . Версия 2.9.0-alpha01 содержит эти коммиты.

Новые возможности

  • Наблюдаемость через Flow -s. Вместо LiveData прогресс Worker теперь можно наблюдать через Flow с помощью WorkManager.getWorkInfosFlow и подобных методов.
  • Точное планирование периодических рабочих процессов через setNextScheduleTimeOverride . Это позволяет динамически рассчитывать следующий график периодических работ, который можно использовать для реализации расширенных функций, таких как адаптивное время обновления, настраиваемое поведение повтора или запуск рабочего процесса новостной ленты до того, как пользователь проснется каждое утро без дрейфа. ExistingPeriodicWorkPolicy.UPDATE следует использовать с этими методами, чтобы избежать отмены текущего рабочего процесса при планировании следующего.
  • Тестирование WorkManager с потоками, соответствующими производству. ExecutorsMode.PRESERVE_EXECUTORS можно использовать для сохранения исполнителей, установленных в Configuration , и для использования реального основного потока.
  • API сопрограмм, такие как CoroutineWorker были перемещены из дополнительного артефакта work-runtime-ktx в основной артефакт work-runtime . work-runtime-ktx теперь пуст.

Изменения API

  • Конструктор WorkInfo теперь общедоступный, что может быть полезно при тестировании. ( Ia00b6 , b/209145335 )
  • work-runtime-ktx теперь пуст, CoroutineWorker и другие специфичные для Kotlin утилиты теперь доступны в основном артефакте work-runtime . ( I71a9a )
  • Добавлен метод setNextScheduleTimeOverride , позволяющий точно устанавливать периодические графики работы ( I3b4da ).
  • Переименован getEarliestRunTimeMillis в getNextScheduleTimeMillis . ( I2bd7a )
  • Информация о следующем запланированном времени выполнения добавляется в WorkInfo . ( I797e4 )
  • Начальная информация о задержке и периодичности добавляется в WorkInfo . ( I52f2f )
  • Добавлен метод наблюдения за работниками через потоки с помощью методов getWorkInfosByTagFlow , getWorkInfoByIdFlow , getWorkInfosForUniqueWorkFlow , getWorkInfosFlow ( If122a )
  • Добавлены отсутствующие аннотации @RequiresApi(...) к конструкторам и свойствам Constraints. Теперь они согласованы с соответствующими аннотациями в сеттерах в Constraints.Builder , которые существовали в ранних версиях WorkManager . ( I6d7d2 )
  • WorkManager теперь имеет отдельный лимит для работников URI контента, чтобы предоставить им гарантированные слоты в JobScheduler для предотвращения пропуска обновлений контента при высокой нагрузке. Лимит можно настроить с помощью Configuration.Builder.setContentUriTriggerWorkersLimit . ( Ic128f )
  • Ограничения добавляются в WorkInfo . ( I162c0 )

Версия 2.8

Версия 2.8.1

22 марта 2023 г.

Выпущен androidx.work:work-*:2.8.1 . Версия 2.8.1 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка ANR в RescheduleReceiver , которая ранее некорректно обрабатывала две одновременные трансляции. ( b/236906724 )

Версия 2.8.0

8 февраля 2023 г.

Выпущен androidx.work:work-*:2.8.0 . Версия 2.8.0 содержит эти коммиты.

Важные изменения по сравнению с версией 2.7.0

Новые возможности

  • Добавлена ​​возможность обновлять WorkRequests неинтрузивным способом, сохраняя исходное время постановки в очередь, цепочку и т. д. Подробную информацию см. в блоге об этой функции, а также в документации Javadocs для WorkManager.updateWork и ExistingPeriodicWorkPolicy.UPDATE .

Изменения API

  • WorkManager.updateWork был добавлен для обновления работы с сохранением ее исходного времени постановки в очередь и цепочки. ( I9a248 , b/219446409 )
  • Добавлена ExistingPeriodicWorkPolicy.UPDATE . Эта политика позволяет обновлять периодическую работу по имени. Она похожа на существующую REPLACE , но менее навязчива: она не отменяет работника, если он в данный момент выполняется, и сохраняет время постановки в очередь — начальная задержка и период рассчитываются на основе исходного времени постановки в очередь, а не времени обновления. REPLACE устарела, чтобы уменьшить путаницу между очень похожими именами REPLACE и UPDATE . Если вы все еще хотите сохранить предыдущую семантику REPLACE , можно использовать недавно добавленную CANCEL_AND_REENQUEUE , которая идентична REPLACE . ( I985ed , b/219446409 )
  • Добавлена ​​возможность перехвата исключений планирования, предоставляющих Consumer<Throwable> через setSchedulingExceptionHandler )
  • Добавлена ​​возможность предоставления Consumer<Throwable> через setInitializationExceptionHandler для определения наличия проблем при попытке инициализации WorkManager.
  • Встроенные помощники для OneTimeWorkRequest и PeriodicWorkRequest были перемещены из androidx.work:work-runtime-ktx в androidx.work:work-runtime ( I0010f , b/209145335 )
  • Вспомогательные методы WorkQuery.fromIds , WorkQuery.fromStates , WorkQuery.fromUniqueWorkNames , WorkQuery.fromTags были добавлены для непосредственного создания WorkQuery . ( b/199919736 ) ( If48f2 , b/199919736 )
  • Добавлен getForegroundInfo в Worker . ( Ic1ead )
  • RxWorker для RxJava 2 и RxJava 3 теперь имеет setForeground возвращающий Completable , который можно использовать вместо setForegroundInfoAsync , возвращающего ListenableFuture
  • RxWorker как для RxJava 2, так и для RxJava 3 имеет getForegroundInfo возвращающий Single , который можно использовать вместо getForegroundInfoAsync , возвращающего ListenableFuture . ( b/203851459 )
  • Ограничения теперь можно создавать напрямую, а не с помощью Constraints.Builder , что удобно для пользователей Kotlin. ( Idc390 , b/137568653 )
  • Добавлена ​​возможность проверки, был ли инициализирован WorkManager . Также добавлен новый API getConfiguration() для разработчиков библиотек, чтобы получить конфигурацию, с которой был инициализирован WorkManager . ( I6eff3 , b/212300336 )

Исправление ошибок

  • Исправлена ​​проблема с жадным планировщиком, из-за которой рабочие процессы не запускались немедленно при нагрузке. ( I9686b , b/248111307 )
  • Добавлено @RequiresPermission в API, требующие предоставления разрешения POST_NOTIFICATIONS в SDK 33 и выше. ( Ie542e , b/238790278 )
  • Распространять отмены в CoroutineScope на ListenableFuture при использовании suspendCancellableCoroutine .

Версия 2.8.0-rc01

7 декабря 2022 г.

Выпущен androidx.work:work-*:2.8.0-rc01 . Версия 2.8.0-rc01 содержит эти коммиты.

Новые возможности

  • Никаких новых функций в этом выпуске. Это в основном повышение версии

Версия 2.8.0-beta02

9 ноября 2022 г.

Выпущен androidx.work:work-*:2.8.0-beta02 . Версия 2.8.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Исправлен метод equals в WorkInfo , который ранее не учитывал информацию о новом поколении. ( 4977cc )

Версия 2.8.0-beta01

5 октября 2022 г.

Выпущен androidx.work:work-*:2.8.0-beta01 . Версия 2.8.0-beta01 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема с жадным планировщиком, из-за которой рабочие процессы не запускались немедленно при нагрузке. ( I9686b , b/248111307 )

Версия 2.8.0-альфа04

7 сентября 2022 г.

Выпущен androidx.work:work-*:2.8.0-alpha04 . Версия 2.8.0-alpha04 содержит эти коммиты.

Изменения API

  • WorkerInfo.getGeneration() и WorkerParameters.getGeneration() были добавлены, которые возвращают поколение воркера. У воркера есть несколько поколений, если он был обновлен через WorkManager.updateWork или WorkManager.enqueueUniquePeriodicWork с использованием ExistingPeriodicWorkPolicy.UPDATE . Обратите внимание, что если воркер в данный момент запущен, этот метод может вернуть более новое поколение из поколения текущего воркера, если обновление произошло во время выполнения воркера. ( I665c5 , b/219446409 ) ( I128a9 , b/219446409 )
  • Добавлен InitializationExceptionHandler — обработчик исключений, который можно использовать для определения наличия проблем при попытке инициализации WorkManager . ( I061de )

Версия 2.8.0-альфа03

10 августа 2022 г.

Выпущен androidx.work:work-*:2.8.0-alpha03 . Версия 2.8.0-alpha03 содержит эти коммиты.

Новые возможности

  • Добавлена ​​возможность обновлять WorkRequests неинтрузивным способом, сохраняя исходное время постановки в очередь, цепочку и т. д. Для получения более подробной информации см. WorkManager.updateWork и ExistingPeriodicWorkPolicy.UPDATE .

Изменения API

  • WorkManager.updateWork был добавлен для обновления работы с сохранением ее исходного времени постановки в очередь и цепочки. ( I9a248 , b/219446409 )
  • Добавлена ExistingPeriodicWorkPolicy.UPDATE . Эта политика позволяет обновлять периодическую работу по имени. Она похожа на существующую REPLACE , но менее навязчива: она не отменяет работника, если он в данный момент выполняется, и сохраняет время постановки в очередь — начальная задержка и период рассчитываются на основе исходного времени постановки в очередь, а не времени обновления. REPLACE устарела, чтобы уменьшить путаницу между очень похожими именами REPLACE и UPDATE . Если вы все еще хотите сохранить предыдущую семантику REPLACE , можно использовать недавно добавленную CANCEL_AND_REENQUEUE , которая идентична REPLACE . ( I985ed , b/219446409 )
  • Добавить возможность перехвата исключений планирования путем определения SchedulingExceptionHandler . ( I033eb )
  • Встроенные помощники для OneTimeWorkRequest и PeriodicWorkRequest были перемещены из androidx.work:work-runtime-ktx в androidx.work:work-runtime ( I0010f , b/209145335 )

Исправление ошибок

  • Добавлено @RequiresPermission в API, требующие предоставления разрешения POST_NOTIFICATIONS в SDK 33 и выше. ( Ie542e , b/238790278 )

Версия 2.8.0-альфа02

6 апреля 2022 г.

Выпущен androidx.work:work-*:2.8.0-alpha02 . Версия 2.8.0-alpha02 содержит эти коммиты.

Изменения API

  • Ограничения теперь можно создавать напрямую, а не с помощью Builder, что удобно для пользователей Kotlin. ( Idc390 , b/137568653 )
  • Добавлена ​​возможность проверки, был ли инициализирован WorkManager . Также добавлен новый API getConfiguration() для разработчиков библиотек, чтобы получить конфигурацию, с которой был инициализирован WorkManager . ( I6eff3 , b/212300336 )

Версия 2.8.0-альфа01

12 января 2022 г.

Выпущен androidx.work:work-*:2.8.0-alpha01 . Версия 2.8.0-alpha01 содержит эти коммиты.

Изменения API

  • Вспомогательные методы WorkQuery.fromStates , WorkQuery.fromUniqueWorkNames , WorkQuery.fromTags были добавлены для непосредственного создания WorkQuery. ( If48f2 , b/199919736 )
  • Добавляет экспериментальные методы BuildCompat для будущих SDK ( Iafd82 , b/207528937 )
  • Добавить getForegroundInfo к Worker . ( Ic1ead )
  • Добавлены вспомогательные методы WorkQuery.fromIds для создания WorkQuery непосредственно из идентификаторов. ( Ie5bdf , b/199919736 )
  • RxWorker теперь имеет setForeground возвращающий Completable , который можно использовать вместо setForegroundInfoAsync , возвращающего ListenableFuture . ( I85156 )
  • RxWorker для RxJava 2 теперь имеет getForegroundInfo возвращающий Single , который можно использовать вместо getForegroundInfoAsync , возвращающего ListenableFuture . ( I21c91 , b/203851459 )
  • RxWorker для RxJava 3 теперь имеет getForegroundInfo возвращающий Single , который можно использовать вместо getForegroundInfoAsync , возвращающего ListenableFuture . ( I1ca8a )
  • RxWorker теперь имеет setForeground возвращающий Completable , который можно использовать вместо setForegroundInfoAsync , возвращающего ListenableFuture . ( I992a3 , b/203851459 )

Исправление ошибок

  • Распространять отмены в CoroutineScope на ListenableFuture при использовании suspendCancellableCoroutine . ( I77e63 )

Версия 2.7

Версия 2.7.1

17 ноября 2021 г.

Выпущен androidx.work:work-*:2.7.1 . Версия 2.7.1 содержит эти коммиты.

Исправление ошибок

  • Отмены в CoroutineScope распространяются на ListenableFuture при использовании suspendCancellableCoroutine . ( I77e63 )
  • Исключение выдается немедленно, когда отложенные запросы на работу помечаются как ускоренные. bef1762

Версия 2.7.0

13 октября 2021 г.

Выпущен androidx.work:work-*:2.7.0 . Версия 2.7.0 содержит эти коммиты.

Важные изменения по сравнению с версией 2.6.0

  • WorkManager представляет новый API WorkRequest.Builder.setExpedited(...) для помощи с ограничениями Foreground Service в Android 12.

  • При использовании setExpedited(...) WorkManager делегирует полномочия ускоренным заданиям в JobScheduler, начиная с Android 12, обеспечивая при этом обратную совместимость с предыдущими версиями Android путем делегирования полномочий приоритетной службе.

Версия 2.7.0-rc01

29 сентября 2021 г.

Выпущен androidx.work:work-*:2.7.0-rc01 . Версия 2.7.0-rc01 содержит эти коммиты.

Эта версия идентична androidx.work:work-*:2.7.0-beta01 .

Версия 2.7.0-beta01

1 сентября 2021 г.

Выпущен androidx.work:work-*:2.7.0-beta01 . Версия 2.7.0-beta01 содержит эти коммиты.

Новые возможности

  • Уменьшение конкуренции между процессами SQLite при инициализации WorkManager.

Изменения API

  • Удалите API @ExperimentalExpeditedWork , поскольку API базовой платформы для Android 12 (S) стабильны. ( aosp/1792806 )

Исправление ошибок

  • Предоставьте лучшее сообщение об ошибке для ускоренных рабочих процессов, которые не реализуют getForegroundInfoAsync() . ( aosp/1809376 )

Версия 2.7.0-альфа05

21 июля 2021 г.

Выпущен androidx.work:work-*:2.7.0-alpha05 . Версия 2.7.0-alpha05 содержит эти коммиты.

В этом выпуске также содержатся исправления ошибок из выпуска WorkManager 2.6.0-beta02 .

Версия 2.7.0-альфа04

2 июня 2021 г.

Выпущена версия androidx.work:work-*:2.7.0-alpha04 .

Этот выпуск также содержит изменения по сравнению с выпуском 2.6.0-beta01 .

Изменения API

  • ListenableWorker.setForegroundAsync() больше не считается устаревшим.
  • Мы рекомендуем использовать API WorkRequest.Builder.setExpedited(...) по возможности. Для лучшей поддержки ситуаций, когда приложение не подвержено ограничениям службы переднего плана , разработчики могут использовать API ListenableWorker.setForegroundAsync() .
  • Если вызывается ListenableWorker.setForegroundAsync() , когда приложение подчиняется ограничениям службы переднего плана, это приведет к возникновению исключения ForegroundServiceStartNotAllowedException .

Исправление ошибок

  • Когда ускоренные задания переносят, они больше не являются ускоренными. Они становятся обычными заданиями.

Версия 2.7.0-альфа03

21 апреля 2021 г.

Выпущен androidx.work:work-*:2.7.0-alpha03 . Версия 2.7.0-alpha03 содержит эти коммиты.

Новые возможности

  • Из WorkManager 2.6.0-alpha02 : добавлена ​​поддержка Workers, которые могут работать в любом процессе. ( Iaf200 )

  • Из WorkManager 2.6.0-alpha02 : добавлен RemoteCoroutineWorker , который является реализацией RemoteListenableWorker , способной привязываться к удаленному процессу. ( I30578 )

Изменения API

  • Из WorkManager 2.6.0-alpha02 : добавлена ​​поддержка сетевого ограничения TEMPORARILY_UNMETERED . ( I08d5e )
  • Из WorkManager 2.6.0-alpha02 : поддержка многопроцессного рабочего процесса для setProgressAsync() . ( Ib6d08 )
  • Из WorkManager 2.6.0-alpha02 : сделать WorkManagerInitializer публичным, чтобы другие androidx.startup.Initializer могли использовать их в качестве зависимостей. ( I5ab11 )

Версия 2.7.0-альфа02

10 марта 2021 г.

Выпущен androidx.work:work-*:2.7.0-alpha02 . Версия 2.7.0-alpha02 содержит эти коммиты.

Исправление ошибок

  • Сделать изменчивость PendingIntent явной, чтобы исправить сбой при использовании Android 12. ( b/180884673 )

Версия 2.7.0-альфа01

18 февраля 2021 г.

Выпущен androidx.work:work-*:2.7.0-alpha01 . Версия 2.7.0-alpha01 содержит эти коммиты.

Новые возможности

  • WorkManager представляет новый API WorkRequest.Builder.setExpedited(...) для учета ограничений службы переднего плана в Android 12.

    Приложения больше не могут запускать службу переднего плана, когда они находятся в фоновом режиме. Поэтому для лучшей поддержки длительной работы, которая ранее была привязана к жизненному циклу службы переднего плана, приложения могут помечать WorkRequest как ускоренные .

    Этот API является заменой API setForegroundAsync(...) / setForeground(...) , которые в настоящее время устарели .

    При использовании setExpedited(...) WorkManager делегирует полномочия ускоренным заданиям в JobScheduler , начиная с Android 12, обеспечивая при этом обратную совместимость с предыдущими версиями Android путем делегирования полномочий приоритетным службам,

Изменения API

  • Добавить поддержку ускоренных WorkRequest -ов.

Версия 2.6.0

Версия 2.6.0

1 сентября 2021 г.

Выпущен androidx.work:work-*:2.6.0 . Версия 2.6.0 содержит эти коммиты.

Важные изменения по сравнению с версией 2.5.0

  • WorkManager теперь использует androidx.startup для инициализации WorkManager. Если вы использовали tools:node="remove" ContentProvider , используемый для инициализации WorkManager в прошлом, то вам нужно сделать следующее.

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • Добавлена ​​поддержка Workers, которые могут работать в любом процессе. ( Iaf200 )

  • Добавлен RemoteCoroutineWorker , который является реализацией RemoteListenableWorker и может привязываться к удаленному процессу. ( I30578 )

Версия 2.6.0-rc01

4 августа 2021 г.

Выпущен androidx.work:work-*:2.6.0-rc01 . Версия 2.6.0-rc01 содержит эти коммиты.

Эта версия идентична androidx.work:work-*:2.6.0-beta02 .

Версия 2.6.0-beta02

21 июля 2021 г.

Выпущен androidx.work:work-*:2.6.0-beta02 . Версия 2.6.0-beta02 содержит эти коммиты.

Исправление ошибок

  • RemoteWorkManager теперь корректно отвязывается от RemoteWorkManagerService , что позволяет RemoteWorkManagerService корректно выполнять очистку. aosp/1730694
  • RemoteListenableWorker теперь корректно отвязывается от RemoteWorkerService , что позволяет RemoteWorkerService корректно выполнять очистку. aosp/1743817
  • ForceStopRunnable теперь работает только в основном процессе приложения. Это оптимизация, которая позволяет избежать конкуренции за ресурсы для приложений, использующих несколько процессов. aosp/1749180 , aosp/1761729

Версия 2.6.0-beta01

2 июня 2021 г.

Выпущен androidx.work:work-*:2.6.0-beta01 . Версия 2.6.0-beta01 содержит эти коммиты.

Этот релиз содержит некоторые незначительные улучшения документации. Релиз в значительной степени идентичен 2.6.0-alpha02 .

Версия 2.6.0-альфа02

21 апреля 2021 г.

Выпущен androidx.work:work-*:2.6.0-alpha02 . Версия 2.6.0-alpha02 содержит эти коммиты.

Новые возможности

  • Добавляет поддержку Workers, которые могут работать в любом процессе. ( Iaf200 )

  • Добавлен RemoteCoroutineWorker , который является реализацией RemoteListenableWorker и может привязываться к удаленному процессу. ( I30578 )

Изменения API

  • Добавлена ​​поддержка сетевого ограничения TEMPORARILY_UNMETERED . ( I08d5e )
  • Поддержка многопроцессного рабочего процесса для setProgressAsync() . ( Ib6d08 )
  • Сделайте WorkManagerInitializer публичным, чтобы другие androidx.startup.Initializer могли использовать их в качестве зависимостей. ( I5ab11 )

Версия 2.6.0-альфа01

24 марта 2021 г.

Выпущен androidx.work:work-*:2.6.0-alpha01 . Версия 2.6.0-alpha01 содержит эти коммиты.

Новые возможности

  • WorkManager теперь использует androidx.startup для инициализации WorkManager. Раньше это делал androidx.work.impl.WorkManagerInitializer . ( aosp/1608813 )

    Если ранее вы использовали tools:node="remove" ContentProvider , используемый для инициализации жизненного цикла процесса, то вам необходимо сделать следующее.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (или)

     <!-- If you want to disable android.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

Изменения API

  • Добавьте API Result.getOutputData() , который возвращает outputData ListenableWorker. ( Ie51e3 )

Исправление ошибок

  • Добавить обходной путь для ошибки OEM, которая приводит к возникновению SecurityException при использовании API AlarmManager . ( aosp/1587518 )

Версия 2.5.0

Версия 2.5.0

27 января 2021 г.

Выпущен androidx.work:work-*:2.5.0 . Версия 2.5.0 содержит эти коммиты.

Основные изменения по сравнению с 2.4.0

  • Новый артефакт :work:work-multiprocess для приложений, использующих несколько процессов. Это обеспечивает повышение производительности за счет объединения планирования рабочих запросов в один процесс.
    • Чтобы использовать work-multiprocess , определите зависимость от: implementation "androidx.work:work-multiprocess:2.5.0"
    • Назначьте основной процесс с помощью Configuration.Builder.setDefaultProcessName(String) .
    • При использовании work-multiprocess вы также хотите использовать RemoteWorkManager для управления WorkRequest s. RemoteWorkManager всегда обращается к назначенному процессу. Планировщик внутри процесса также работает в назначенном процессе.
  • Иногда ActivityManager не может создать экземпляр JobService для запуска задания. Это приводит к тому, что базовое задание тихо отбрасывается из-за ошибки платформы. WorkManager теперь обеспечивает наличие резервных заданий для каждого отдельного WorkRequest при инициализации Application путем согласования заданий. Это значительно повышает надежность выполнения заданий. ( b/172475041 , aosp/1489577 )
  • WorkManager ограничивает рост базы данных, уменьшая длительность буфера, в котором WorkRequest отслеживаются после завершения WorkRequest . Ранее длительность составляла 7 дней. Теперь она уменьшена до 1 дня + длительность keepResultsForAtLeast . ( aosp/1419708 )
  • TestListenableWorkerBuilder теперь поддерживает конкретизированный класс, расширяющий ListenableWorker , что упрощает тестирование. ( aosp/1443299 , b/169787349 )
  • Инспектор WorkManager теперь доступен при использовании Android Studio Arctic Fox.

Версия 2.5.0-rc01

13 января 2021 г.

Выпущен androidx.work:work-*:2.5.0-rc01 . Версия 2.5.0-rc01 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой getWorkInfosLiveData некорректно становился недействительным после обновления сущностей при использовании API на основе WorkQuery . ( aosp/1540566 , b/173769028 )
  • Исправлена ​​ошибка, при которой транзакции базы данных не отмечались как успешные в некоторых редких случаях. Это вызывает проблемы на некоторых устройствах Motorola. ( aosp/1535368 , b/175944460 )
  • Исправлена ​​ошибка игнорирования NoSuchElementException при попытке отвязать мертвый процесс. ( aosp/1530589 )
  • Улучшение ConstraintTrackingWorker для остановки ListenableWorker только в том случае, если он еще не остановлен. ( aosp/1496844 , b/172946965 )
  • Обновите библиотеки androidx.work для Java 8 ( Ibd2f2 )

Версия 2.5.0-beta02

2 декабря 2020 г.

Выпущен androidx.work:work-*:2.5.0-beta02 . Версия 2.5.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка в androidx.work:work-multiprocess , из-за которой WorkManager непреднамеренно блокировал вызывающий поток при попытке привязки к назначенному процессу. ( aosp/1475538 )
  • Исправлена ​​ошибка, из-за которой PeriodicWorkRequest не согласовывались правильно. ( b/172475041 , aosp/1489577 )
  • Добавлено решение для ошибки платформы при остановке службы переднего плана при использовании API setForeground* . ( b/170924044 , aosp/1489901 )

Версия 2.5.0-beta01

28 октября 2020 г.

Выпущен androidx.work:work-*:2.5.0-beta01 . Версия 2.5.0-beta01 содержит эти коммиты.

Новые возможности

  • WorkManager автоматически ограничивает количество WorkRequest s, которые может получить планировщик в процессе. Запросы по-прежнему выполняются в порядке FIFO. ( aosp/1455228 )
  • WorkManager пытается выполнить восстановление, когда хранилище данных приложения находится в плохом состоянии. ( aosp/1463103 )

Исправление ошибок

  • При прерывании ListenableWorker немедленно помечайте их ENQUEUED , чтобы впоследствии их можно было перепланировать. ( aosp/1455618 , b/170273988 )

Версия 2.5.0-альфа03

14 октября 2020 г.

androidx.work:work-*:2.5.0-alpha03 выпускается. Версия 2.5.0-Alpha03 содержит эти коммиты.

Изменения API

  • TestListenableWorkerBuilder и TestWorkerBuilder не используют необработанные типы. ( I883AD , B/169787349 )

Исправление ошибок

  • Используйте ApplicationInfo , чтобы определить имя процесса приложения по умолчанию. ( B/168716641 , AOSP/1429950 )
  • Исправьте правила видимости для RemoteWorkManager и RemoteWorkContinuation . Эти API не отмечены как @Restricted . ( AOSP/1432091 )
  • Исправьте правила прогика для :work:work-multiprocess . ( AOSP/1432091 )
  • Улучшить жизненные циклы уведомлений для длительной работы, связанной с обслуживанием переднего плана. ( B/168502234 , AOSP/1431331 )

Версия 2.5.0-альфа02

16 сентября 2020 г.

androidx.work:work-*:2.5.0-alpha02 выпускается. Версия 2.5.0-Alpha02 содержит эти коммиты.

Новые возможности

  • Добавьте API в Workquery, чтобы иметь возможность использовать id S для запроса WorkInfo S. ( AOSP/1412372 , B/157335295 )
  • Workmanager лучше поддерживает приложения, которые используют несколько процессов с новым артефактом ( androidx.work:work-multiprocess:* :*). Этот новый артефакт помогает решить несколько проблем, с которыми сталкиваются большие приложения, включая:
    • Workmanager обычно должен быть инициализирован в каждом процессе приложения. Это не очень здорово, потому что существует увеличение конкурента SQLite, которое, в свою очередь, вызывает другие проблемы. У Workmanager теперь есть новые API, которые можно использовать для обозначения первичного процесса приложения с использованием Configuration#setDefaultProcessName(processName) . Имя processName - это полностью квалифицированное имя процесса, которое выглядит как packageName:processName (например, com.example:remote ).
    • Набор новых API: RemoteWorkManager и RemoteWorkContinuation для enqueue , cancel и query на работу. Эти API не включают в себя варианты LiveData , чтобы избежать спора SQLite в разных процессах. Все вызовы enqueue , cancel и query пересылаются в процесс primary приложения с использованием AIDL и возвращают свободно ListenableFuture пластинки. ( AOSP/1392657 , AOSP/1411210 , AOSP/1412215 , AOSP/1417713 )

Изменения API

  • Workmanager теперь Chrunes завершил WorkRequest нет, у которых нет неполных зависимостей более агрессивно. Продолжительность буфера изменилась с 7 дней до 1 дня. ( AOSP/1419708 )

Исправление ошибок

  • Workmanager теперь проактивно примиряет рабочие места, поэтому рабочие места WorkRequest S и JobScheduler синхронизируются, когда WorkManager инициализируется. ( AOSP/1412794 , B/166292069 )

Версия 2.5.0-альфа01

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, которые обеспечивают соблюдение:

    • Использование правого foregroundServiceType . ( B/147873061 setForegroundAsync() 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-beta01

20 мая 2020 г.

androidx.work:work-gcm:2.4.0-beta01 , androidx.work:work-runtime:2.4.0-beta01 , androidx.work:work-runtime-ktx:2.4.0-beta01 , androidx.work:work-rxjava2:2.4.0-beta01 и androidx.work:work-testing:2.4.0-beta01 :. Версия 2.4.0-бета01 содержит эти коммиты.

Исправление ошибок

  • Исправьте ошибку, в которой ForegroundService не останавливается после прерывания переднего Worker . ( B/155579898 , AOSP/1302153 )
  • Исправьте ошибку, в которой WorkManager пытается выполнить несколько экземпляров Worker , связанного с службой переднего плана ( B/156310133 , AOSP/1309853 )
  • Добавьте поддержку для динамического добавления заводов, чтобы делегировать при использовании DelegatingWorkerFactory работ. ( B/156289105 , AOSP/1309745 )
  • Выравнивание отслеживания для ограничений BATTERY_NOT_LOW более тесно с платформой. ( AOSP/1312583 )

Версия 2.4.0-альфа03

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 Methods withStates , 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-альфа01

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, которые обеспечивают соблюдение:

    • Использование правого foregroundServiceType . ( B/147873061 setForegroundAsync() AOSP/1215915 )
    • Указание идентификаторов JobScheduler , которые WorkManager должен использовать при непосредственном использовании API JobService . ( AOSP/1223567 )

Изменения API

  • Добавьте ExistingWorkPolicy.APPEND_OR_REPLACE , который похож на APPEND , но заменяет цепочку, которая отменила или провалилась предпосылки. ( B/134613984 , AOSP/1199640 )

  • Предоставьте возможность добавить пользовательский RunnableScheduler для отслеживания WorkRequest , которые необходимо выполнить в будущем. Это используется в программе Processess. ( AOSP/1203944 )

Исправление ошибок

  • Устаревший setProgress() у RxWorker , потому что он ранее возвращал Single<Void> , который является невозможным типом. Добавлен новый API setCompletableProgress() , который возвращает 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 указан foregroundServiceType ForegroundInfo 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-beta02

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-beta01

20 ноября 2019 г.

androidx.work:work-*:2.3.0-beta01 выпускается. Версия 2.3.0-бета01 содержит эти коммиты .

Новые возможности

  • Добавлено новое правило Lint, которое предотвращает ошибки разработчика из-за неправильной реализации androidx.work.Configuration.Provider при использовании инициализации по требованию. AOSP/1164559

Версия 2.3.0-альфа03

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-альфа02

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-альфа01

22 августа 2019 г.

androidx.work:work-*:2.3.September 5, 20190-alpha01 выпускается. Коммуты, включенные в эту версию, можно найти здесь .

Новые возможности

  • ListenableWorker , теперь может установить прогресс через API setProgressAsync() . Также добавлено соответствующий API setProgress suspend в CoroutineWorker и setProgress в RxWorker , который возвращает Single<Void> . С этими новыми APIS работники могут передавать информацию о прогрессе через WorkInfo , который имеет соответствующий API getProgress . ( B/79481554 )
  • Data имеют API containsKey() , который можно использовать для проверки этих входных данных для 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 при использовании API JobScheduler на некоторых устройствах. ( 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-beta01

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 для настройки вашего проекта для инициализации по требованию:
    1. Отключите автоматический инициализатор .
    2. Реализовать Configuration.Provider в вашем пользовательском объекте Application .
    3. Измените все ссылки на 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-альфа01

24 апреля 2019 г.

Workmanager 2.1.0-Alpha01 выпускается. Эта версия содержит несколько новых API. Обратите внимание, что начиная с этой версии, будут новые функции, которые не будут возвращены в релиз 1.x. Мы рекомендуем переключиться на 2.x.

Изменения API

  • Добавлена по требованию инициализации для Workmanager, которая создаст Workmanager только при ссылке. B/127497100 для настройки вашего проекта для инициализации по требованию:
    1. Отключите автоматический инициализатор .
    2. Реализовать Configuration.Provider в вашем пользовательском объекте Application .
    3. Измените все ссылки на 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.

Зависимости до антирода

Информацию об использовании расширений Kotlin см. В документации KTX .
Справочные документы: Java

Круто

dependencies {
    def work_version = "1.0.1"

    // (Java only)
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

Котлин

dependencies {
    val work_version = "1.0.1"

    // (Java only)
    implementation("android.arch.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("android.arch.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("android.arch.work:work-rxjava2:$work_version")

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

Версия 1.0.1

Версия 1.0.1

9 апреля 2019 г.

Workmanager 1.0.1 выпущен. Этот релиз идентичен 1.0.1-RC01 .

Обратите внимание, что мы настоятельно рекомендуем пользователям обновляться до Workmanager 2.x, так как в отклике 1.x будет очень мало обновлений. Новые API также не будут выпущены для библиотеки 1.x.

Версия 1.0.1-RC01

2 апреля 2019 г.

Workmanager 1.0.1-RC01 выпускается. Эта версия содержит некоторые исправления ошибок.

Исправление ошибок

  • Роболектрические тесты теперь работают должным образом с Workmanager. б/122553577
  • Исправлено краевая сбоем с ограничениями, отслеживающими ограничения, не были очищены на API до предварительного Jobscheduler. б/129226383
  • Исправлена StackOverflowError , имеющая дело с длинными цепями работы. б/129091233

Версия 1.0.0

Версия 1.0.0

5 марта 2019

Это стабильный релиз Workmanager 1.0.0. Эта версия Workmanager идентична 1.0.0-RC02.

Версия 1.0.0-RC02

21 февраля 2019 г.

Это второй релиз кандидата на стабильный релиз Workmanager 1.0.0. Этот релиз содержит два исправления ошибок.

Исправление ошибок

  • Worker S теперь правильно запланированы после сбоя приложения. B/124546316

  • Worker , которые бросают неконтролируемое 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

Версия 1.0.0-beta01

19 декабря 2018 года

Этот релиз не содержит изменений API; Двигаясь вперед, ожидается, что Workmanager останется стабильным API до следующей версии, если не будет критической проблемы. Этот релиз содержит некоторые исправления ошибок.

Исправление ошибок

  • Ранее сбиваемые дети успешно завершенной родительской работы больше не будут работать. B/120811767
  • Properly initialized logging classes (primarily surfaced during tests).

Version 1.0.0-alpha13

12 декабря 2018 г.

This release contains a minor API change that will be helpful for some Kotlin users.

Изменения API

  • androidx.work.Result has been moved to be an inner class of ListenableWorker . This prevents refactoring conflicts with Kotlin's top-level Result class. This is a breaking API change. b/120564418

Breaking API Changes

  • androidx.work.Result has been moved to be an inner class of ListenableWorker .

Версия 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 , introduces RxWorker . This is a ListenableWorker that expects a Single<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 into Result . Result is now a "sealed class" with three concrete implementations, which you can obtain via Result.success() (or Result.success(Data) ), Result.failure() (or Result.failure(Data) ), and Result.retry() . Your ListenableFuture s now result Result instead of Payload . Worker s don't have getter and setter methods for output Data . This is a breaking change.
  • Added Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) and Constraints.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() and ListenableFuture.await() Kotlin extension methods.
  • Renamed Operation.getException() to Operation.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 , and OneTimeWorkRequest to streamline the API. To fix any build problems, you can wrap your existing varargs with Arrays.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 existing combine 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 via observeForever 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 a WorkInfo with the CANCELLED State during ListenableWorker.onStopped() .
  • Treat null Result s as failures in ListenableWorker . 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 into Result . Result is now a "sealed class" with three concrete implementations, which you can obtain via Result.success() (or Result.success(Data) ), Result.failure() (or Result.failure(Data) ), and Result.retry() . Your ListenableFuture s now result Result instead of Payload . Worker s don't have getter and setter methods for output Data .
  • Added Operation.await() and ListenableFuture.await() Kotlin extension methods.
  • Renamed Operation.getException() to Operation.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 , and OneTimeWorkRequest to streamline the API. To fix any build problems, you can wrap your existing varargs with Arrays.asList(...) . We still include single-argument versions of each method.
  • Removed WorkContinuation.combine(OneTimeWorkRequest, *) variants. They were presenting a confusing API; the existing combine 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 new CoroutineWorker .
  • WorkStatus has been renamed to WorkInfo . All corresponding getStatus method variants have been renamed to the corresponding getWorkInfo variants. This is a breaking change.
  • ListenableWorker.onStopped() no longer accepts has a boolean argument representing if the WorkRequest was cancelled. WorkManager no longer makes this distinction. This is a breaking change.
  • androidx.work.test package has been renamed to androidx.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() and WorkerParameters.getTriggeredContentAuthorities() previously returned arrays. Now these methods return Collections. This is a breaking change.
  • ListenableWorker.onStartWork() is renamed to ListenableWorker.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() and Configuration.getMinJobSchedulerID() are renamed to Configuration.getMinJobSchedulerId() and Configuration.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 unique OneTimeWorkRequest s without having to create a WorkContinuation .
  • All variants of enqueue and cancel methods on WorkManager now return a new Operation type. This is a breaking change.
  • All variants of enqueue no longer accept varargs for WorkRequest s. This is a breaking change. Use Collections instead. You can use Arrays.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 an IllegalStateException . This is a breaking change.

Исправление ошибок

  • WorkRequest.Builder s in the work-runtime-ktx artifact now use ListenableWorker 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 to WorkInfo . All corresponding getStatus method variants have been renamed to the corresponding getWorkInfo variants.
  • ListenableWorker.onStopped() no longer accepts has a boolean argument representing if the WorkRequest was cancelled. WorkManager no longer makes this distinction.
  • androidx.work.test package has been renamed to androidx.work.testing package.
  • Setters on Constraints are no longer a part of the public API.
  • WorkerParameters.getTriggeredContentUris() and WorkerParameters.getTriggeredContentAuthorities() previously returned arrays. Now these methods return Collections.
  • ListenableWorker.onStartWork() is renamed to ListenableWorker.startWork() .
  • The constructor for WorkStatus is no longer a part of the public API.
  • Configuration.getMaxJobSchedulerID() and Configuration.getMinJobSchedulerID() are renamed to Configuration.getMinJobSchedulerId() and Configuration.getMaxJobSchedulerId() respectively.
  • All variants of enqueue and cancel methods on WorkManager now return a new Operation type.
  • All variants of enqueue no longer accept varargs for WorkRequest s.
  • Attempting to initialize WorkManager more than once per process will now result in an IllegalStateException .

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 default Worker constructor. This is a breaking API change.
  • Renamed NonBlockingWorker to ListenableWorker , 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 the ListenableFuture appropriately. Reference implementations of ListenableFuture s are provided in the Futures package in alpha02 (see below the WorkManager section).
    • Worker extends ListenableWorker and still operates as before, with an abstract Result doWork() method.
    • Shuffled some methods and members from Worker to ListenableWorker .
    • 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 implementation DefaultWorkerFactory have been merged into an abstract class called WorkerFactory . The implementation ensures that the default reflection-based behavior is called as a last-ditch effort for any user-created WorkerFactory instances. This is a breaking change.
  • Removed WorkManager.synchronous() and WorkContinuation.synchronous() and all related methods. Added ListenableFuture<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 return void ; it now returns a ListenableFuture<Void> . You can call ListenableFuture.addListener(Runnable, Executor) or ListenableFuture.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 the Future s contract.
    • To maintain parity with the synchronous getStatus* methods, we have provided ListenableFuture variants, and renamed the existing ones that returned LiveData to explicitly have "LiveData" as part of the name (for example, getStatusesByIdLiveData(UUID) ). This is a breaking API change.

Исправление ошибок

  • Fixed the known issue from alpha09 regarding duplicate androidx-annotations.pro files. You may remove the workaround from the previous release notes by deleting exclude '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 was REPLACE d. b/116253486 and b/116677275
  • WorkContinuation.combine() now accepts one or more WorkContinuation s instead of two or more. b/117266752

Breaking API Changes

  • Removed all previously deprecated methods and classes, notably the default Worker constructor.
  • The interface WorkerFactory and the concrete implementation DefaultWorkerFactory have been merged into an abstract class called WorkerFactory .
  • Removed WorkManager.synchronous() and WorkContinuation.synchronous() .
  • WorkManager.getStatus*() methods now return ListenableFuture s. WorkManager.getStatus*LiveData() return LiveData s.

Версия 1.0.0-альфа09

19 сентября 2018 г.

Известная проблема

If you run into the following issue: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'", please put the following in your gradle file as a temporary workaround while we fix the issue in alpha10:

Круто

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Котлин

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

Исправление ошибок

  • Added another fix that was needed for the "100 jobs" error. b/115560696
  • Added some fixes for foreign key constraint errors due to race conditions. b/114705286
  • Delegated ConstraintTrackingWorker.onStopped(boolean) calls to the underlying Worker . 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 a WorkerFactory as part of the WorkManager.Configuration . The fallback factory is DefaultWorkerFactory , which matches behavior of previous versions of WorkManager.
    • The default constructors for Worker and NonBlockingWorker are now marked as deprecated. Please use the new constructor ( Worker(Context, WorkerParameters) ) and call super(Context, WorkerParameters) ; future versions of WorkManager will remove the default constructor.
  • 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 of NonBlockingWorker .
  • Add ability to trigger timed work in TestDriver via TestDriver.setInitialDelayMet(UUID) and TestDriver.setPeriodDelayMet(UUID) . b/113360060

Breaking Changes

  • The default Worker and NonBlockingWorker constructors are deprecated. Please migrate to the new constructor ASAP. Future versions will remove the default constructor.

Версия 1.0.0-альфа08

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 in JobScheduler processing completion. b/112817355

Version 1.0.0-alpha07

16 августа 2018 г.

Исправление ошибок

  • Fixed a potential SQL query with negative limits that could return an unbounded number of results.
  • Work that has finished execution now correctly cancels all pending copies of that work in other Schedulers. This led to exceeding the JobScheduler jobs limit. b/111569265
  • Fixed a ConcurrentModificationException in ConstraintTracker . b/112272753
  • Changed return type annotations of Data.getBooleanArray(String) and Data.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) and Data.getIntArray(String) to @Nullable instead of @NonNull . b/112275229
  • Kotlin extensions: deprecated Map.toWorkData() and added a top-level workDataOf(vararg Pair<String, Any?>) to be more consistent with existing APIs.

Версия 1.0.0-альфа06

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 using WorkRequest.Builder#build() . b/111408337
  • Enable the use of RescheduleReceiver only when there are WorkRequest s that need it. b/111765853

Версия 1.0.0-альфа05

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 an IllegalStateException . This is a breaking API change.
  • Added a new API, Configuration.Builder.setMinimumLoggingLevel(int) , which can control WorkManager verbosity. By default, WorkManager logs Log.INFO and above.
  • Changed signature of Data.getString() so it no longer takes a default value (it is implicitly null ). This is a breaking API change.
  • Marked some methods needed only for internal usage as @hide . This includes the Constraints constructor, Data.toByteArray() , and Data.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 using JobScheduler . 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 given WorkRequest . b/111238024

Breaking Changes

  • 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 implicitly null ).
  • Marked some methods needed only for internal usage as @hide . This includes the Constraints constructor, Data.toByteArray() , and Data.fromByteArray(byte[]) .

Версия 1.0.0-альфа04

26 июня 2018 г.

Исправление ошибок

  • PeriodicWorkRequest s are now correctly rescheduled when using the AlarmManager 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

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 version 1.1.1-rc1 .

Изменения API

  • Added getStatusesSync() , the synchronous version of WorkContinuation.getStatuses() .
  • Worker has the ability to distinguish between user-initiated cancellation and temporary os-requested stopping. Worker.isStopped() returns true if any kind of stop has been requested. Worker.isCancelled() returns true 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 to JobScheduler or AlarmManager . This helps prevent WorkManager from taking all your available JobScheduler slots.
  • Added Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) which helps define a range of JobScheduler job ids safe for WorkManager to use. b/79996760
  • Worker.getRunAttemptCount() returns the current run count for a given Worker . b/79716516
  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) allows you to enqueue a unique PeriodicWorkRequest s. b/79600647
  • WorkManager.cancelAllWork() cancels all Worker s. Libraries that depend on WorkManager can query when this method was called last by using WorkManager.getLastCancelAllTimeMillis() for additional cleanup of internal state.
  • Added WorkManager.pruneWork() to remove completed jobs from the internal database. b/79950952 , b/109710758

Изменения в поведении

  • Added an implicit tag for all WorkRequest s, which is the fully qualified class name for the Worker . This allows the ability to remove WorkRequest s without tag s or when the id is not available. b/109572351

Breaking Changes

  • Renamed Worker.WorkerResult to Worker.Result .
  • Worker.onStopped now has an additional isCancelled parameter which is set to true when the Worker has explicitly been cancelled.

Версия 1.0.0-альфа02

24 мая 2018 г.

Исправление ошибок

  • Fixed a NullPointerException on State.isFinished() . b/79550068
  • Fixed an issue which caused Worker s to be rescheduled on Application.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 in Data . b/79443878
  • Data.Builder.putAll() now returns an instance of the Builder . 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 a Worker has been stopped. Worker.onStopped() can be used to perform lightweight cleanup operations.
  • Worker.getTags() API returns a Set of tags associated with the Worker .
  • Added javax.time.Duration overloads for APIs which take a combination of duration and TimeUnit s. This is guarded by @RequiresApi(26) .
  • WorkManager extensions have moved from the androidx.work.ktx package to the androidx.work package. The old extensions are deprecated and will be removed in a future version.
  • Configuration.withExecutor() is deprecated. Use Configuration.setExecutor() instead.

Версия 1.0.0-альфа01

8 мая 2018 г.

WorkManager simplifies scheduling and execution of guaranteed, constraint-aware background work. This initial release is 1.0.0-alpha01 .