WorkManager
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 22 de outubro de 2025 | 2.11.0 | - | - | - |
Como declarar dependências
Para adicionar uma dependência ao WorkManager, é preciso adicionar o repositório Maven do Google ao seu projeto.
Adicione as dependências dos artefatos necessários no arquivo build.gradle para
seu app ou módulo:
Groovy
dependencies { def work_version = "2.11.0" // (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
dependencies { val work_version = "2.11.0" // (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") }
Para ver mais informações sobre o uso de extensões Kotlin, consulte a documentação do Android KTX.
Para ver mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 2.11
Versão 2.11.0
22 de outubro de 2025
Lançamento de androidx.work:work-*:2.11.0. A versão 2.11.0 contém estes commits.
Mudanças importantes desde a versão 2.10.0:
- O
minSdkfoi atualizado da API 21 para a API 23. - A API
setRemoteSessionTimeoutMillisno criador de configuração deWorkManagerfoi adicionada para permitir a configuração do tempo de vida de uma sessãoRemoteWorkManagerdesde o último uso.
Versão 2.11.0-rc01
8 de outubro de 2025
Lançamento de androidx.work:work-*:2.11.0-rc01. A versão 2.11.0-rc01 contém estes commits.
Versão 2.11.0-beta01
24 de setembro de 2025
Lançamento de androidx.work:work-*:2.11.0-beta01. A versão 2.11.0-beta01 contém estes commits.
Mudanças na API
- Adicione
stopRunningWorkWithReasonaWorkManagerTestDriver. (Ie53b2, b/439955564)
Correções de bugs
- Correção da interrupção do serviço em primeiro plano quando há comandos pendentes (Iae822, b/432069314).
- Correção do worker de corrotina remota que não desvincula o serviço remoto (I842f2, b/247113322)
Versão 2.11.0-alpha01
27 de agosto de 2025
Lançamento de androidx.work:work-*:2.11.0-alpha01. A versão 2.11.0-alpha01 contém estes commits.
Mudanças na API
- A minSdk foi atualizada da API 21 para a API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
- A API
setRemoteSessionTimeoutMillisno criador de configuração do WorkManager foi adicionada para permitir a configuração do tempo de vida de uma sessão do RemoteWorkManager desde o último uso. (Ib23c8). - Adição de uma API experimental em
WorkRequest.Builderpara aplicar o backoff quando o trabalho é interrompido pelo sistema. (Ie2dc7, b/335513480). - Adicionamos uma API de teste para transmitir uma classe de worker diferente para
TestListenableWorkerBuilderdaquela que está sendo criada para oferecer suporte a implementações personalizadas deWorkerFactory(If6bff, b/389154854).
Correções de bugs
- Armazenamento em cache de recursos de rede em
SharedNetworkCallbackpara evitar IPCs desnecessários (Ie4027, b/427115602). - Correção de um problema com a avaliação de restrição de rede em que os itens de trabalho após o primeiro não recebiam os recursos de rede atuais e, em vez disso, atingiam
ConstraintsNotMetapós um tempo limite (Ib6a66, b/427115602).
Versão 2.10
Versão 2.10.5
24 de setembro de 2025
Lançamento de androidx.work:work-*:2.10.5. A versão 2.10.5 contém estes commits.
Correções de bugs
- Correção da interrupção do serviço em primeiro plano quando há comandos pendentes (Iae822, b/432069314).
Versão 2.10.4
10 de setembro de 2025
Lançamento de androidx.work:work-*:2.10.4. A versão 2.10.4 contém estes commits.
Correções de bugs
- Correção de um problema em que
RemoteCoroutineWorkernão desvincula o serviço remoto (I842f2, b/247113322).
Versão 2.10.3
30 de julho de 2025
Lançamento de androidx.work:work-*:2.10.3. A versão 2.10.3 contém estes commits.
Correções de bugs
- Correção de um problema em que workers com restrições de rede idênticas a um worker anterior informavam que as restrições não estavam sendo atendidas. (b/427115602).
Versão 2.10.2
18 de junho de 2025
Lançamento de androidx.work:work-*:2.10.2. A versão 2.10.2 contém estes commits.
Correções de bugs
- Correção de um problema ao persistir workers com solicitações de rede e recursos padrão que levariam à adição de recursos removidos, causando mau funcionamento dos workers com restrições de rede. (b/409716532)
- Correção de um bug que impedia a execução imediata de workers com restrições de rede devido a restrições não atendidas, mesmo que a rede e os recursos estivessem disponíveis. (b/423403088)
Versão 2.10.1
23 de abril de 2025
Lançamento de androidx.work:work-*:2.10.1. A versão 2.10.1 contém estes commits.
Correções de bugs
- Reduz a possibilidade de
TooManyRequestsExceptionser gerado pelo registro deWorkManagerde umNetworkCallbackusado para rastreamento de restrições. (b/231499040, b309d5).
Versão 2.10.0
30 de outubro de 2024
Lançamento de androidx.work:work-*:2.10.0. A versão 2.10.0 contém estes commits.
Mudanças significativas desde a versão 2.9.1
- Adicionamos tags de rastreamento a jobs de
WorkManager, o que simplifica muito o entendimento de "adb shell dumpsys jobscheduler", já que ele vai conter o nome do Worker em execução. As seções de rastreamento também são adicionadas em torno das principais áreas deWorkManager. Configuration.workerCoroutineContextfoi adicionado para controlar o dispatcher em queCoroutineWorkeré executado.- Os desenvolvedores podem especificar
NetworkRequestcomo uma restrição para um worker usando o métodoConstraints.setRequiredNetworkRequest. Isso permite um controle mais granular sobre em qual rede o worker deve ser executado. - O
WorkManager2.10.0 agora é compilado com o SDK 35 e contém várias mudanças para compatibilidade com o SDK 35.
Versão 2.10.0-rc01
24 de outubro de 2024
Lançamento de androidx.work:work-*:2.10.0-rc01. A versão 2.10.0-rc01 contém estes commits.
Versão 2.10.0-beta01
2 de outubro de 2024
Lançamento de androidx.work:work-*:2.10.0-beta01. A versão 2.10.0-beta01 contém estes commits.
Versão 2.10.0-alpha04
18 de setembro de 2024
Lançamento de androidx.work:work-*:2.10.0-alpha04. A versão 2.10.0-alpha04 contém estes commits.
Mudanças na API
- Adicione o motivo da interrupção
STOP_REASON_FOREGROUND_SERVICE_TIMEOUTquando um worker em primeiro plano é interrompido devido ao tempo limite de execução com base no tipo de serviço em primeiro plano. (Ibd0af).
Versão 2.10.0-alpha03
4 de setembro de 2024
Lançamento de androidx.work:work-*:2.10.0-alpha03. A versão 2.10.0-alpha03 contém estes commits.
Novos recursos
- Adicionamos tags de rastreamento a jobs de
WorkManager, o que simplifica muito o entendimento de "adb shell dumpsys jobscheduler", já que ele vai conter o nome do Worker em execução. As seções de rastreamento também são adicionadas em torno das principais áreas deWorkManager.
Mudanças na API
- O WorkManager 2.10.0 agora é compilado com o SDK 35.
- Correção do tempo limite dos workers em primeiro plano do tipo "serviço curto" e "sincronização de dados", que causava um ANR quando
WorkManagernão chamavastopSelf(). Essa correção se aplica apenas a dispositivos com as APIs 34 e 35, em que os tipos de serviços em primeiro plano foram introduzidos. (ca06b2, b/364508145) - Novas APIs
WorkerParametersque permitem alternar o processo remoto ao qual oWorkerse vincula ao usar umWorkerFactory. (Ibdc8a, Ie8a90, I7373f)
Correções de bugs
- Correção de uma falha causada por
WorkManagerao tentar reiniciar um worker de longa duração (ou seja, um worker em primeiro plano) quando o tipo de trabalho em primeiro plano tinha permissões de pré-requisito do Android 14 que foram revogadas. (b/333957914). - Removemos o esboço manual do acesso a novas APIs da plataforma, já que isso acontece automaticamente pela modelagem de API ao usar o R8 com o AGP 7.3 ou mais recente (por exemplo, a versão 3.3 do R8) e para todos os builds ao usar o AGP 8.1 ou mais recente (por exemplo, a versão 8.1 do D8). Recomendamos que os clientes que não usam o AGP atualizem para a versão 8.1 ou mais recente do D8. Veja mais detalhes neste artigo. (Ia60e0, b/345472586).
Versão 2.10.0-alpha02
17 de abril de 2024
Lançamento de androidx.work:work-*:2.10.0-alpha02. A versão 2.10.0-alpha02 contém estes commits.
Mudanças na API
- Foi adicionada a capacidade de emitir intervalos de rastreamento usando um
@RestrictToTracerconfigurável emWorkManager. (I17d7f, b/260214125). Configuration.workerCoroutineContextfoi adicionado para controlar o dispatcher em queCoroutineWorkeré executado. Isso ajuda a evitar completamente o uso deDispatchers.DefaultemWorkManager. (Icd1b7)- Adição de gerenciadores de exceção personalizados para Workers (Ib1b74, b/261190695).
OneTimeWorkRequest.BuilderePeriodicWorkRequest.Builderagora podem ser construídos comKClassem vez deClass:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6).- A classe
WorkManagerfoi migrada para Kotlin. Agora, os métodos que retornamLiveData,ListenableFutureouFlowfornecem informações corretas de capacidade de aceitar valores nulos. Isso pode exigir mudanças no código-fonte dos clientes se as proposições de nulidade nesse código estiverem incorretas. (If6757)
Versão 2.10.0-alpha01
24 de janeiro de 2024
Lançamento de androidx.work:work-*:2.10.0-alpha01. A versão 2.10.0-alpha01 contém estas confirmações.
Novos recursos
- Os desenvolvedores podem especificar
NetworkRequestcomo uma restrição para um worker usando o métodoConstraints.setRequiredNetworkRequest. Isso permite um controle mais granular sobre em qual rede o worker deve ser executado.
Mudanças na API
- Adição da capacidade de especificar
NetworkRequestcomo a restrição. (Id98a1, b/280634452)
Versão 2.9
Versão 2.9.1
7 de agosto de 2024
Lançamento de androidx.work:work-*:2.9.1. A versão 2.9.1 contém estes commits.
Correções de bugs
- Correção de uma falha causada por
WorkManagerao tentar reiniciar um worker de longa duração (ou seja, um worker em primeiro plano) quando o tipo em primeiro plano do trabalho tinha permissões pré-requisito do Android 14 que foram revogadas. (b/333957914).
Versão 2.9.0
29 de novembro de 2023
Lançamento de androidx.work:work-*:2.9.0. A versão 2.9.0 contém estas confirmações.
Mudanças importantes desde a versão 2.8.0
- Observabilidade via
Flows. Em vez deLiveData, o progresso do worker agora pode ser observado pelo Flow usandoWorkManager.getWorkInfosFlowe métodos semelhantes. - Agora,
WorkManagerfornece uma dica sobre por que um worker foi interrompido anteriormente. Ele pode ser consultado de um worker usando o métodogetStopReason()ou deWorkInfousandogetStopReason(). - Programação precisa de workers periódicos via
setNextScheduleTimeOverride. Isso permite o cálculo dinâmico da próxima programação de trabalho periódico, que pode ser usada para implementar recursos avançados, como tempos de atualização adaptáveis, comportamento de novas tentativas personalizado ou fazer com que um worker de feed de notícias seja executado antes de o usuário acordar todas as manhãs sem desvio. OExistingPeriodicWorkPolicy.UPDATEprecisa ser usado com essas técnicas para evitar o cancelamento de um worker em execução ao programar o próximo. - Testes do WorkManager com linhas de execução correspondentes à produção. O
ExecutorsMode.PRESERVE_EXECUTORSpode ser usado noinitializeTestWorkManagerpara preservar os executores definidos noConfiguratione usar a linha de execução principal real. - As APIs de corrotinas, como
CoroutineWorker, foram movidas do artefato adicional work-runtime-ktx para o artefato principal work-runtime. Agora, work-runtime-ktx está vazio.
Mudanças na API
stopReasonfoi adicionado aWorkInfo. Ele disponibilizastopReasondepois que o worker é executado. Isso pode ser útil no relatóriostopReasonde uma forma utilizável, porque, depois que um worker é interrompido, um app pode ser encerrado muito rapidamente. (I21386).- Permitir que
Clockseja definido por configuração e usado para direcionar o sequenciamento de execução dos testes do Worker. (Ic586e) - O método
getStopReason()foi adicionado aListenableWorkerpara dar uma dica sobre o motivo da interrupção do worker. (I07060) - Adicionamos
WorkManagerTestInitHelper#closeWorkDatabase()para evitar o aviso do Closeguard sobre recursos vazados. (Ia8d49) - O construtor de
WorkInfoagora é público, o que pode ser útil em testes. (Ia00b6, b/209145335). work-runtime-ktxagora está vazio.CoroutineWorkere outras utilidades específicas do Kotlin estão disponíveis no artefato principal do tempo de execução do trabalho. (I71a9a).- Foi adicionado o método
setNextScheduleTimeOverride, que permite a configuração precisa de programações de trabalho periódicas (I3b4da). - Adicionamos
getNextScheduleTimeMillispara receber informações sobre o tempo de execução programado emWorkInfo. (I797e4). - O atraso inicial e as informações de periodicidade são adicionados a
WorkInfo. (I52f2f). - Adição do método para observar workers via Flows usando os métodos
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow(If122a) - Adição de anotações
@RequiresApi(...)ausentes aos construtores e propriedades deConstraints. Agora, elas estão alinhadas com as anotações correspondentes em setters noConstraints.Builder, que existiam desde as primeiras versões doWorkManager. (I6d7d2). - Agora, o
WorkManagertem um limite separado para workers de URI de conteúdo, garantindo slots noJobSchedulere evitando a perda de atualizações de conteúdo sob alta carga. O limite pode ser configurado usandoConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f). - As restrições são adicionadas a
WorkInfo. (I162c0)
Versão 2.9.0-rc01
18 de outubro de 2023
Lançamento de androidx.work:work-*:2.9.0-rc01. A versão 2.9.0-rc01 contém estas confirmações.
- Nenhuma mudança desde a última versão Beta.
Versão 2.9.0-beta01
6 de setembro de 2023
Lançamento de androidx.work:work-*:2.9.0-beta01. A versão 2.9.0-beta01 contém estas confirmações.
Mudanças na API
- Adição de constantes para motivos de interrupção retornados por
WorkInfo.stopReasoneListenableWorker.stopReason(I0cc00).
Versão 2.9.0-alpha02
26 de julho de 2023
Lançamento de androidx.work:work-*:2.9.0-alpha02. A versão 2.9.0-alpha02 contém estas confirmações.
Novos recursos
- Agora,
WorkManagerfornece uma dica sobre por que um worker foi interrompido anteriormente. Ele pode ser consultado de um worker usando o métodogetStopReason()ou deWorkInfousandogetStopReason().
Mudanças na API
stopReasonfoi adicionado aWorkInfo. Ele disponibilizastopReasondepois que o worker é executado. Isso pode ser útil no relatóriostopReasonde maneira utilizável, porque, depois que um worker é interrompido, um app pode ser encerrado muito rapidamente. (I21386).- Permite que o Clock seja definido por configuração e usado para direcionar o sequenciamento de execução dos testes do Worker. (Ic586e)
- O método
getStopReason()foi adicionado aListenableWorkerpara dar uma dica sobre o motivo da interrupção do worker. (I07060) - Adicionamos
WorkManagerTestInitHelper#closeWorkDatabase()para evitar o aviso do Closeguard sobre recursos vazados. (Ia8d49)
Correções de bugs
- Adicionada a capacidade de ignorar
overrideNextScheduleTimeusandoTestDrivere corrigidos problemas de capacidade de teste. (Ic2905).
Versão 2.9.0-alpha01
7 de junho de 2023
Lançamento de androidx.work:work-*:2.9.0-alpha01. A versão 2.9.0-alpha01 contém estas confirmações.
Novos recursos
- Observabilidade via
Flows. Em vez deLiveData, o progresso do worker agora pode ser observado pelo Flow usandoWorkManager.getWorkInfosFlowe métodos semelhantes. - Programação precisa de workers periódicos via
setNextScheduleTimeOverride. Isso permite o cálculo dinâmico da próxima programação de trabalho periódico, que pode ser usada para implementar recursos avançados, como tempos de atualização adaptáveis, comportamento de novas tentativas personalizado ou fazer com que um worker de feed de notícias seja executado antes de o usuário acordar todas as manhãs sem desvio.ExistingPeriodicWorkPolicy.UPDATEdeve ser usado com essas técnicas para evitar o cancelamento de um worker em execução ao programar o próximo. - O teste do
WorkManagercom correspondência de linhas de execução na produção. OExecutorsMode.PRESERVE_EXECUTORSpode ser usado para preservar executores definidos emConfiguratione usar a linha de execução principal real. - As APIs de corrotinas, como
CoroutineWorker, foram movidas do artefato adicionalwork-runtime-ktxpara o artefato principalwork-runtime.work-runtime-ktxestá vazio agora.
Mudanças na API
- O construtor de
WorkInfoagora é público, o que pode ser útil em testes. (Ia00b6, b/209145335). - O
work-runtime-ktxagora está vazio. OCoroutineWorkere outros utilitários específicos do Kotlin estão disponíveis no artefato principalwork-runtime. (I71a9a). - Foi adicionado o método
setNextScheduleTimeOverride, que permite a configuração precisa de programações de trabalho periódicas (I3b4da). getEarliestRunTimeMillisfoi renomeado comogetNextScheduleTimeMillis(I2bd7a).- As informações sobre o próximo horário de execução programado são adicionadas a
WorkInfo. (I797e4). - O atraso inicial e as informações de periodicidade são adicionados a
WorkInfo. (I52f2f). - Adição do método para observar workers via Flows usando os métodos
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow(If122a) - Adição de anotações
@RequiresApi(...)ausentes aos construtores e propriedades de "Constraints". Agora, elas estão alinhadas com as anotações correspondentes em setters noConstraints.Builder, que existiam desde as primeiras versões doWorkManager. (I6d7d2). - Agora, o
WorkManagertem um limite separado para workers de URI de conteúdo, garantindo slots noJobSchedulere evitando a perda de atualizações de conteúdo sob alta carga. O limite pode ser configurado usandoConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f). - As restrições são adicionadas a
WorkInfo. (I162c0)
Versão 2.8
Versão 2.8.1
22 de março de 2023
Lançamento de androidx.work:work-*:2.8.1. A versão 2.8.1 contém estas confirmações.
Correções de bugs
- Correção de um ANR em
RescheduleReceiverque antes não processava corretamente duas transmissões simultâneas. (b/236906724).
Versão 2.8.0
8 de fevereiro de 2023
Lançamento de androidx.work:work-*:2.8.0. A versão 2.8.0 contém estas confirmações.
Mudanças importantes desde a versão 2.7.0
Novos recursos
- Foi adicionada a capacidade de atualizar
WorkRequestsde forma não intrusiva, preservando o tempo original da fila, do encadeamento, entre outros. Consulte a postagem detalhada sobre esse recurso, assim como javadocs deWorkManager.updateWorkeExistingPeriodicWorkPolicy.UPDATEpara conferir mais detalhes.
Mudanças na API
WorkManager.updateWorkfoi adicionado para atualizar o trabalho que preserva o tempo original de enfileiramento e encadeamento (I9a248, b/219446409).- A
ExistingPeriodicWorkPolicy.UPDATEfoi adicionada. Essa política permite atualizar um trabalho periódico pelo nome. Ela é parecida com o valorREPLACEatual, mas é menos invasiva, porque não cancela um worker em execução e preserva o tempo de enfileiramento. O atraso e período iniciais são calculados usando o tempo original da fila em vez do tempo de atualização. O uso deREPLACEfoi descontinuado para diminuir a confusão entreREPLACEeUPDATE, que têm nomes muito parecidos. Se você ainda quiser manter a semântica anterior deREPLACE, use o novoCANCEL_AND_REENQUEUE, que é idêntico aREPLACE(I985ed, b/219446409). - Foi adicionada a capacidade de interceptar exceções de programação que fornecem
Consumer<Throwable>via setSchedulingExceptionHandler. - Foi adicionada a capacidade de fornecer
Consumer<Throwable>via setInitializationExceptionHandler para determinar se houve problemas ao tentar inicializar o WorkManager. - Os auxiliares inline para
OneTimeWorkRequestePeriodicWorkRequestforam movidos deandroidx.work:work-runtime-ktxparaandroidx.work:work-runtime(I0010f, b/209145335). - Os métodos auxiliares
WorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNameseWorkQuery.fromTagsforam adicionados para criar aWorkQuerydiretamente (b/199919736, If48f2, b/199919736). - O método
getForegroundInfofoi adicionado aoWorker(Ic1ead). - O
RxWorkerpara RxJava 2 e RxJava 3 agora tem o métodosetForegroundque retorna um elementoCompletable. Ele pode ser usado no lugar desetForegroundInfoAsync, que retorna um artefatoListenableFuture - O
RxWorkerpara RxJava 2 e RxJava 3 tem umgetForegroundInfoque retorna um elementoSingle. Ele pode ser usado no lugar degetForegroundInfoAsync, que retorna umListenableFuture(b/203851459). - Agora, as restrições podem ser construídas diretamente em vez de pelo
Constraints.Builder, o que é conveniente para usuários do Kotlin (Idc390, b/137568653). - Foi adicionada a capacidade de verificar se o
WorkManagerfoi inicializado. Além disso, uma nova APIgetConfiguration()foi adicionada para que os desenvolvedores de bibliotecas recebam a configuração com que oWorkManagerfoi inicializado (I6eff3, b/212300336).
Correções de bugs
- Corrigido um problema com o excesso de atividades do programador que impedia os workers de serem executados imediatamente durante o carregamento (I9686b, b/248111307).
- Adicionamos a
@RequiresPermissiona APIs que exigem a permissãoPOST_NOTIFICATIONSno SDK 33 e versões mais recentes (Ie542e, b/238790278). - Propagação de cancelamentos no
CoroutineScopepara oListenableFutureao usarsuspendCancellableCoroutine.
Versão 2.8.0-rc01
7 de dezembro de 2022
Lançamento de androidx.work:work-*:2.8.0-rc01. A versão 2.8.0-rc01 contém essas confirmações.
Novos recursos
- Não há novos recursos nesta versão. Isso se refere principalmente a um aumento de versão.
Versão 2.8.0-beta02
9 de novembro de 2022
Lançamento de androidx.work:work-*:2.8.0-beta02. A versão 2.8.0-beta02 contém estas confirmações.
Correções de bugs
- Correção do método
equalsemWorkInfo, que antes não levava em consideração as novas informações de geração (4977cc).
Versão 2.8.0-beta01
5 de outubro de 2022
Lançamento de androidx.work:work-*:2.8.0-beta01. A versão 2.8.0-beta01 contém estas confirmações.
Correções de bugs
- Corrigido um problema com o excesso de atividades do programador que impedia os workers de serem executados imediatamente durante o carregamento (I9686b, b/248111307).
Versão 2.8.0-alpha04
7 de setembro de 2022
Lançamento de androidx.work:work-*:2.8.0-alpha04. A versão 2.8.0-alpha04 contém estas confirmações.
Mudanças na API
- Foram adicionados
WorkerInfo.getGeneration()eWorkerParameters.getGeneration(), que retornam a geração de um worker. Um worker tem várias gerações quando é atualizado porWorkManager.updateWorkouWorkManager.enqueueUniquePeriodicWorkusandoExistingPeriodicWorkPolicy.UPDATE. Se o worker estiver em execução no momento, esse método vai poder retornar uma geração mais recente após uma atualização (I665c5, b/219446409) (I128a9, b/219446409). - Foi adicionado
InitializationExceptionHandler, um gerenciador de exceções que pode ser usado para determinar se houve problemas ao tentar inicializarWorkManager(I061de).
Versão 2.8.0-alpha03
10 de agosto de 2022
Lançamento de androidx.work:work-*:2.8.0-alpha03. A versão 2.8.0-alpha03 contém estas confirmações.
Novos recursos
- Foi adicionada a capacidade de atualizar
WorkRequestsde forma não intrusiva, preservando o tempo original da fila, do encadeamento, entre outros. ConsulteWorkManager.updateWorkeExistingPeriodicWorkPolicy.UPDATEpara saber mais detalhes.
Mudanças na API
WorkManager.updateWorkfoi adicionado para atualizar o trabalho que preserva o tempo original de enfileiramento e encadeamento (I9a248, b/219446409).- A
ExistingPeriodicWorkPolicy.UPDATEfoi adicionada. Esta política permite atualizar um trabalho periódico pelo nome. Ela é parecida com o método atualREPLACE, mas é menos invasiva, porque não cancela um worker em execução e preserva o tempo de enfileiramento. O atraso e o período inicial são calculados usando o tempo original da fila em vez do tempo de atualização. O uso deREPLACEfoi descontinuado para diminuir a confusão entre nomes muito parecidos comREPLACEeUPDATE. Se você ainda quiser manter a semântica anterior deREPLACE, use o novoCANCEL_AND_REENQUEUE, que é idêntico aREPLACE(I985ed, b/219446409). - Foi adicionada a capacidade de interceptar exceções de programação definindo um
SchedulingExceptionHandler(I033eb). - Os auxiliares inline para
OneTimeWorkRequestePeriodicWorkRequestforam movidos deandroidx.work:work-runtime-ktxparaandroidx.work:work-runtime(I0010f, b/209145335).
Correções de bugs
- A
@RequiresPermissionfoi adicionada às APIs que exigem a concessão da permissão POST_NOTIFICATIONS no SDK 33 e versões mais recentes (Ie542e, b/238790278).
Versão 2.8.0-alpha02
6 de abril de 2022
Lançamento de androidx.work:work-*:2.8.0-alpha02. A versão 2.8.0-alpha02 contém estas confirmações.
Mudanças na API
- Agora, as restrições podem ser construídas diretamente em vez de pelo builder, o que é conveniente para usuários do Kotlin (Idc390, b/137568653).
- Foi adicionada a capacidade de verificar se o
WorkManagerfoi inicializado. Além disso, uma nova APIgetConfiguration()foi adicionada para que os desenvolvedores de bibliotecas recebam a configuração com que oWorkManagerfoi inicializado (I6eff3, b/212300336).
Versão 2.8.0-alpha01
12 de janeiro de 2022
Lançamento de androidx.work:work-*:2.8.0-alpha01. A versão 2.8.0-alpha01 contém estas confirmações.
Mudanças na API
- Os métodos auxiliares
WorkQuery.fromStates,WorkQuery.fromUniqueWorkNameseWorkQuery.fromTagsforam adicionados para criar a WorkQuery diretamente (If48f2, b/199919736). - Adição de métodos experimentais BuildCompat para SDKs futuros (Iafd82, b/207528937).
- Adição de
getForegroundInfoàWorker(Ic1ead). - Adição dos métodos auxiliares
WorkQuery.fromIdspara criar a WorkQuery diretamente com os IDs (Ie5bdf, b/199919736). - O RxWorker agora tem o método
setForegroundretornando um elementoCompletable. Ele pode ser usado no lugar desetForegroundInfoAsync, que retorna um artefatoListenableFuture(I85156). - O RxWorker para RxJava 2 agora tem o método
getForegroundInforetornando um elementoSingle. Ele pode ser usado no lugar degetForegroundInfoAsync, que retorna um artefatoListenableFuture(I21c91, b/203851459). - O RxWorker para RxJava 3 agora tem um método
getForegroundInforetornando um elementoSingle. Ele pode ser usado no lugar degetForegroundInfoAsync, que retorna um artefatoListenableFuture(I1ca8a). - O RxWorker agora tem o método
setForegroundretornando um elementoCompletable. Ele pode ser usado no lugar desetForegroundInfoAsync, que retorna um artefatoListenableFuture(I992a3, b/203851459).
Correções de bugs
- Propagação de cancelamentos no
CoroutineScopepara oListenableFutureao usarsuspendCancellableCoroutine(I77e63).
Versão 2.7
Versão 2.7.1
17 de novembro de 2021
Lançamento de androidx.work:work-*:2.7.1. A versão 2.7.1 contém estas confirmações.
Correções de bugs
- Os cancelamentos no
CoroutineScopesão propagados para oListenableFutureao usar o métodosuspendCancellableCoroutine(I77e63). - Uma exceção é gerada imediatamente quando solicitações de trabalho atrasadas são marcadas como aceleradas (bef1762).
Versão 2.7.0
13 de outubro de 2021
androidx.work:work-*:2.7.0 é lançado. A versão 2.7.0 contém estas confirmações.
Mudanças importantes desde a versão 2.6.0
O WorkManager introduz uma nova API
WorkRequest.Builder.setExpedited(...)para ajudar com as restrições de serviço em primeiro plano no Android 12.Ao usar
setExpedited(...), o WorkManager delega para jobs priorizados no JobScheduler começando pelo Android 12, mas mantém a compatibilidade com versões anteriores do Android delegando a um serviço em primeiro plano.
Versão 2.7.0-rc01
29 de setembro de 2021
androidx.work:work-*:2.7.0-rc01 é lançado. A versão 2.7.0-rc01 contém estas confirmações.
Esta versão é idêntica à androidx.work:work-*:2.7.0-beta01.
Versão 2.7.0-beta01
1º de setembro de 2021
Lançamento de androidx.work:work-*:2.7.0-beta01. A versão 2.7.0-beta01 contém estas confirmações.
Novos recursos
- Redução da contenção de SQLite em vários processos ao inicializar o WorkManager.
Mudanças na API
- Remoção de APIs
@ExperimentalExpeditedWork, já que as APIs de plataforma subjacentes para o Android 12 (S) são estáveis (aosp/1792806).
Correções de bugs
- Fornecimento de uma mensagem de erro melhor para workers acelerados que não implementam
getForegroundInfoAsync()(aosp/1809376).
Versão 2.7.0-alpha05
21 de julho de 2021
Lançamento de androidx.work:work-*:2.7.0-alpha05. A versão 2.7.0-alpha05 contém estas confirmações.
Essa versão também contém correções de bugs do WorkManager 2.6.0-beta02.
Versão 2.7.0-alpha04
2 de junho de 2021
Lançamento de androidx.work:work-*:2.7.0-alpha04.
Essa versão também contém as mudanças da 2.6.0-beta01.
Mudanças na API
- A
ListenableWorker.setForegroundAsync()não está mais descontinuada. - Recomendamos usar a API
WorkRequest.Builder.setExpedited(...)quando possível. Para oferecer melhor suporte em situações em que o app não está sujeito a restrições de serviço em primeiro plano, os desenvolvedores podem usar a APIListenableWorker.setForegroundAsync(). - Se a
ListenableWorker.setForegroundAsync()for chamada, quando o app estiver sujeito a restrições de serviço em primeiro plano, uma ForegroundServiceStartNotAllowedException será gerada.
Correções de bugs
- Quando os jobs acelerados forem reprogramados, eles não serão mais acelerados. Eles se tornarão jobs normais.
Versão 2.7.0-alpha03
21 de abril de 2021
Lançamento de androidx.work:work-*:2.7.0-alpha03. A versão 2.7.0-alpha03 contém essas confirmações.
Novos recursos
Do WorkManager (link em inglês)
2.6.0-alpha02: adição de suporte para workers que podem ser executados em qualquer processo (Iaf200).Do WorkManager
2.6.0-alpha02: adição de umRemoteCoroutineWorkerque é uma implementação deRemoteListenableWorkerque pode se vincular a um processo remoto (I30578).
Mudanças na API
- Do WorkManager
2.6.0-alpha02: adição de suporte para restrição de redeTEMPORARILY_UNMETERED(I08d5e). - Do WorkManager
2.6.0-alpha02: suporte de worker para vários processos comsetProgressAsync()(Ib6d08). - Do WorkManager
2.6.0-alpha02: tornar oWorkManagerInitializerpúblico para que outrosandroidx.startup.Initializerpossam ser usados como dependências (I5ab11).
Versão 2.7.0-alpha02
10 de Março de 2021
Lançamento de androidx.work:work-*:2.7.0-alpha02. A versão 2.7.0-alpha02 contém estas confirmações.
Correções de bugs
- A mutabilidade da
PendingIntentagora é explícita para corrigir uma falha quando usada no Android 12 (b/180884673).
Versão 2.7.0-alpha01
18 de fevereiro de 2021
Lançamento do androidx.work:work-*:2.7.0-alpha01. A versão 2.7.0-alpha01 contém estas confirmações
Novos recursos
O WorkManager introduz uma nova API
WorkRequest.Builder.setExpedited(...)para considerar as restrições do serviço em primeiro plano no Android 12.Os aplicativos não podem mais iniciar um serviço em primeiro plano quando estão em segundo plano. Portanto, para oferecer melhor suporte em um trabalho de longa duração vinculado anteriormente ao ciclo de vida de um serviço em primeiro plano, os aplicativos podem marcar
WorkRequests como acelerados.Esta API é uma substituição para as APIs
setForegroundAsync(...)/setForeground(...)que foram descontinuadas.Ao usar
setExpedited(...), o WorkManager delega para jobs priorizados noJobSchedulera partir do Android 12, mas mantém a compatibilidade com versões anteriores do Android delegando aos serviços em primeiro plano.
Mudanças na API
- Adição de suporte para
WorkRequests aceleradas.
Versão 2.6.0
Versão 2.6.0
1º de setembro de 2021
Lançamento de androidx.work:work-*:2.6.0. A versão 2.6.0 contém estas confirmações.
Mudanças importantes desde a versão 2.5.0
O WorkManager agora usa
androidx.startuppara inicializar o WorkManager. Se você usavatools:node="remove", oContentProviderque era usado para inicializar o ciclo de vida do processo anteriormente, é necessário fazer o seguinte.<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" />Adição de suporte para workers que podem ser executados em qualquer processo. (Iaf200).
Adição de um
RemoteCoroutineWorker, uma implementação de RemoteListenableWorker que pode ser vinculada a um processo remoto (I30578).
Versão 2.6.0-rc01
4 de agosto de 2021
Lançamento de androidx.work:work-*:2.6.0-rc01. A versão 2.6.0-rc01 contém estas confirmações.
Esta versão é idêntica à androidx.work:work-*:2.6.0-beta02.
Versão 2.6.0-beta02
21 de julho de 2021
Lançamento de androidx.work:work-*:2.6.0-beta02. A versão 2.6.0-beta02 contém estas confirmações.
Correções de bugs
- O
RemoteWorkManageragora se desvincula corretamente doRemoteWorkManagerService, possibilitando que oRemoteWorkManagerServiceseja limpo sem qualquer erro (aosp/1730694). - O
RemoteListenableWorkeragora se desvincula corretamente doRemoteWorkerService, possibilitando que oRemoteWorkerServiceseja limpo sem qualquer errro (aosp/1743817). - O
ForceStopRunnableagora só é executado no processo principal do app. Essa é uma otimização e evita a contenção de recursos para apps que usam vários processos (aosp/1749180, aosp/1761729).
Versão 2.6.0-beta01
2 de junho de 2021
Lançamento de androidx.work:work-*:2.6.0-beta01. A versão 2.6.0-beta01 contém estas confirmações.
Essa versão contém algumas pequenas melhorias na documentação. Ela é praticamente idêntica à 2.6.0-alpha02.
Versão 2.6.0-alpha02
21 de abril de 2021
Lançamento de androidx.work:work-*:2.6.0-alpha02. A versão 2.6.0-alpha02 contém essas confirmações.
Novos recursos
Adiciona suporte para workers que podem ser executados em qualquer processo (Iaf200).
Adição de um
RemoteCoroutineWorker, que é uma implementação deRemoteListenableWorkerque pode ser vinculada a um processo remoto (I30578).
Mudanças na API
- Adição de suporte para restrição de rede
TEMPORARILY_UNMETERED(I08d5e). - Suporte de worker de vários processos para
setProgressAsync()(Ib6d08). - O
WorkManagerInitializeragora é público para que possa ser usado como dependência por outrosandroidx.startup.Initializers (I5ab11).
Versão 2.6.0-alpha01
24 de março de 2021
Lançamento de androidx.work:work-*:2.6.0-alpha01. A versão 2.6.0-alpha01 contém estas confirmações.
Novos recursos
WorkManageragora usaandroidx.startuppara inicializar o WorkManager. Anteriormente, isso era feito peloandroidx.work.impl.WorkManagerInitializer(aosp/1608813).Se você usava
tools:node="remove", oContentProviderque era usado para inicializar o ciclo de vida do processo anteriormente, será necessário fazer o seguinte.<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>(ou)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Mudanças na API
- Adição de uma API
Result.getOutputData()que retorna ooutputDatado ListenableWorker (Ie51e3).
Correções de bugs
- Adicione uma solução alternativa para um bug de OEM que causa uma
SecurityExceptionao usar APIsAlarmManager(aosp/1587518).
Versão 2.5.0
Versão 2.5.0
27 de janeiro de 2021
Lançamento de androidx.work:work-*:2.5.0. A versão 2.5.0 contém estas confirmações.
Principais mudanças desde a versão 2.4.0
- Um novo artefato
:work:work-multiprocesspara apps que usam vários processos. Isso gera ganhos de desempenho ao unificar a programação de solicitações de trabalho em um único processo.- Definição de uma dependência em
implementation "androidx.work:work-multiprocess:2.5.0"para usarwork-multiprocess - Designação de um processo principal usando Configuration.Builder.setDefaultProcessName(String).
- Ao usar
work-multiprocess, também é recomendável usar o RemoteWorkManager para gerenciar suasWorkRequests. O RemoteWorkManager sempre acessa o processo designado. O programador em processo também é executado no processo designado.
- Definição de uma dependência em
- Às vezes,
ActivityManagernão consegue instanciarJobServicepara iniciar um job. Isso faz com que o job implícito seja silenciosamente descartado devido a um bug da plataforma. OWorkManageragora garante que haja jobs de apoio para cadaWorkRequestquando umApplicationestiver sendo inicializado ao reconciliar os jobs. Isso melhora muito a confiabilidade da execução de jobs (b/172475041, aosp/1489577). - O
WorkManagerlimita o crescimento do banco de dados reduzindo a duração do buffer para o qual asWorkRequests são rastreadas após a conclusão de umaWorkRequest. Antes, a duração era de7dias. Ela foi reduzida para1dia + a duração de keepResultsForAtLeast (aosp/1419708). - O
TestListenableWorkerBuilderagora oferece suporte à classe reificada que estendeListenableWorkerpara facilitar os testes (aosp/1443299, b/169787349). - O WorkManager Inspector agora está disponível ao usar o Android Studio Arctic Fox.
Versão 2.5.0-rc01
13 de janeiro de 2021
Lançamento de androidx.work:work-*:2.5.0-rc01. A versão 2.5.0-rc01 contém estas confirmações.
Correções de bugs
- Corrigido um bug em que o
getWorkInfosLiveDatanão era invalidado corretamente após a atualização de entidades ao usar a API baseada emWorkQuery(aosp/1540566, b/173769028). - Corrigido um bug em que as transações do banco de dados não eram marcadas como bem-sucedidas em alguns casos raros. Isso causa problemas em alguns dispositivos Motorola (aosp/1535368, b/175944460).
- Correção de um bug para ignorar
NoSuchElementExceptions ao tentar se desvincular de um processo inativo (aosp/1530589). - Melhoria em
ConstraintTrackingWorkerpara interromper umListenableWorkerapenas se ele ainda não tiver sido interrompido (aosp/1496844, b/172946965). - Atualização das bibliotecas androidx.work para Java 8 (Ibd2f2).
Versão 2.5.0-beta02
2 de dezembro de 2020
Lançamento de androidx.work:work-*:2.5.0-beta02. A versão 2.5.0-beta02 contém estas confirmações.
Correções de bugs
- Corrigido um bug no
androidx.work:work-multiprocessem que o WorkManager bloqueou acidentalmente a linha de execução de chamada ao tentar se vincular ao processo designado (aosp/1475538). - Correção de um bug em que as
PeriodicWorkRequests não estavam sendo reconciliadas corretamente (b/172475041, aosp/1489577). - Adição de uma solução alternativa para um bug de plataforma ao interromper o serviço em primeiro plano durante o uso das APIs
setForeground*(b/170924044, aosp/1489901).
Versão 2.5.0-beta01
28 de outubro de 2020
androidx.work:work-*:2.5.0-beta01 é lançado. A versão 2.5.0-beta01 contém estas confirmações.
Novos recursos
- O
WorkManagerlimita automaticamente o número deWorkRequests que podem ser selecionadas pelo programador de processos. As solicitações ainda são executadas na ordem PEPS (aosp/1455228). - O
WorkManagertenta a recuperação quando o armazenamento de dados do aplicativo está em um estado inadequado (aosp/1463103).
Correções de bugs
- Quando
ListenableWorkers forem interrompidos, marque-os imediatamente comoENQUEUEDpara que possam ser reprogramados (aosp/1455618, b/170273988).
Versão 2.5.0-alpha03
14 de outubro de 2020
androidx.work:work-*:2.5.0-alpha03 é lançado. A versão 2.5.0-alpha03 contém estas confirmações.
Mudanças na API
TestListenableWorkerBuildereTestWorkerBuildernão usam tipos brutos (I883ad, b/169787349).
Correções de bugs
- Uso de
ApplicationInfopara determinar o nome do processo padrão do app (b/168716641, aosp/1429950). - Correção das regras de visibilidade para
RemoteWorkManagereRemoteWorkContinuation. Essas APIs não são mais marcadas como@Restricted(aosp/1432091). - Correção das regras do ProGuard para
:work:work-multiprocess(aosp/1432091). - Melhoria dos ciclos de vida de notificações para trabalhos de longa duração vinculados a um serviço em primeiro plano (b/168502234, aosp/1431331).
Versão 2.5.0-alpha02
16 de setembro de 2020
androidx.work:work-*:2.5.0-alpha02 é lançado. A versão 2.5.0-alpha02 contém estas confirmações.
Novos recursos
- Adição de uma API ao WorkQuery para usar
ids para consultarWorkInfos (aosp/1412372, b/157335295). - O WorkManager oferece suporte aprimorado a apps que usam vários processos com um novo artefato (
androidx.work:work-multiprocess:*). Esse novo artefato ajuda a resolver alguns problemas que os apps grandes encontram, incluindo:- Normalmente, o WorkManager precisa ser inicializado em todos os processos do app. Isso não é ideal, porque causa um aumento de contenção no SQLite, o que gera outros problemas. O WorkManager agora tem novas APIs que podem ser usadas para designar um processo principal do app usando o
Configuration#setDefaultProcessName(processName). OprocessNameé um nome de processo totalmente qualificado que tem a seguinte aparência:packageName:processName(por exemplo,com.example:remote). - Um conjunto de novas APIs:
RemoteWorkManagereRemoteWorkContinuationpara solicitações de trabalhoenqueue,cancelequery. Essas APIs não incluem variantesLiveDatapara evitar a contenção de SQLite em processos múltiplos. Todas as chamadas paraenqueue,cancelequerysão encaminhadas para um processoprimarydo app usando AIDL e retornam umListenableFuturefluente (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713).
- Normalmente, o WorkManager precisa ser inicializado em todos os processos do app. Isso não é ideal, porque causa um aumento de contenção no SQLite, o que gera outros problemas. O WorkManager agora tem novas APIs que podem ser usadas para designar um processo principal do app usando o
Mudanças na API
- O WorkManager agora remove de forma mais agressiva as
WorkRequests concluídas que não têm dependências incompletas. A duração do buffer foi modificada de7dias para1dia (aosp/1419708).
Correções de bugs
- O WorkManager agora reconcilia jobs proativamente para que jobs
WorkRequests eJobSchedulerestejam sincronizados quando oWorkManagerfor inicializado (aosp/1412794, b/166292069).
Versão 2.5.0-alpha01
19 de agosto de 2020
androidx.work:work-*:2.5.0-alpha01 é lançado. A versão 2.5.0-alpha01 contém estas confirmações.
Novos recursos
- Mudanças nas APIs internas permitem oferecer ferramentas melhores com o
WorkManagerdaqui em diante. Fique de olho nas próximas atualizações.
Correções de bugs
- Processamento de
SecurityExceptions ao rastrear o estado da rede em alguns dispositivos (aosp/1396969).
Contribuição externa
- Correção da documentação de
ArrayCreatingInputMergerpor Zac Sweers (github/43).
Versão 2.4.0
Versão 2.4.0
22 de julho de 2020
androidx.work:work-*:2.4.0 é lançado. A versão 2.4.0 contém estas confirmações.
Principais mudanças desde a versão 2.3.0
- O escalonador de processos de
WorkManagers agora está mais capacitado. Anteriormente, oSchedulerde processos considerava apenas a execução de trabalhos que não atrasavam e cujas restrições eram atendidas. O escalonador de processos agora monitoraWorkRequests que podem ser executados no futuro, incluindo PeriodicWorkRequests. OSchedulerde processos também não observa os limites de programação, mas ainda está restrito ao tamanho doExecutorusado pelo WorkManager. Isso significa que o aplicativo agora pode executar muito mais WorkRequests quando o app está em primeiro plano. Para gerenciar a execução de trabalhos atrasados em primeiro plano, oWorkManagertambém introduz um novoRunnableSchedulerconfigurável (aosp/1185778). - O WorkManager agora oferece suporte ao RxJava 3. Para usar o RxJava 3, inclua a seguinte dependência:
implementation "androidx.work:work-rxjava3:2.4.0"(aosp/1277904). - Adição da capacidade de consultar
WorkInfos usando umaWorkQuery. Isso é útil quando os desenvolvedores querem procurarWorkInfos com uma combinação de vários atributos. Para saber mais, consulteWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)ouWorkQuery.Builder.fromUniqueWorkNames(...)(aosp/1253230, b/143847546). Adição de capacidade de solicitar informações de diagnóstico do
WorkManagerusando:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"Isso fornece muitas informações úteis, incluindo:
- WorkRequests que foram concluídos nas últimas 24 horas.
- WorkRequests EM EXECUÇÃO no momento.
- WorkRequests agendados (aosp/1235501).
Adição de
ExistingWorkPolicy.APPEND_OR_REPLACE, que é semelhante aAPPEND, mas substitui uma cadeia que cancelou ou não cumpriu os pré-requisitos (b/134613984, aosp/1199640).Capacidade de adicionar um
RunnableSchedulerpersonalizado para monitorar WorkRequests que precisam ser executados no futuro. Isso é usado pelo programador de processos (aosp/1203944).Foi adicionado suporte à adição dinâmica de fábricas para delegação ao usar um
DelegatingWorkerFactory(b/156289105, aosp/1309745).Alinhamento mais preciso das restrições de
BATTERY_NOT_LOWem relação à plataforma (aosp/1312583).O programador em processo agora usa APIs melhores para determinar o nome do processo. Isso é útil para oferecer melhor compatibilidade a apps que usam vários processos (aosp/1324732).
Novas regras de lint que obrigam:
- Uso do
foregroundServiceTypecorreto ao usar APIssetForegroundAsync()(b/147873061, aosp/1215915). - A especificação de IDs do JobScheduler que o WorkManager precisa usar com as APIs do JobService diretamente (aosp/1223567).
- Foi adicionada uma nova regra de lint que garante que as implementações de
ListenableWorkeragora sejampublicao usar aWorkerFactorypadrão (aosp/1291262).
- Uso do
As chamadas para
setForegroundAsync()que não são concluídas antes da conclusão de umListenableWorkeragora são sinalizadas usando umIllegalStateExceptionnoListenableFutureretornado (aosp/1262743).Corrigido um bug em que o
ForegroundServicenão é interrompido depois que umWorkerem primeiro plano é interrompido (b/155579898, aosp/1302153).Correção de um bug em que
WorkManagertenta executar várias instâncias de umWorkervinculado a um serviço em primeiro plano (b/156310133, aosp/1309853).
Versão 2.4.0-rc01
24 de junho de 2020
androidx.work:work-*:2.4.0-rc01 é lançado. A versão 2.4.0-rc01 contém estas confirmações.
Correções de bugs
- O programador em processo agora usa APIs melhores para determinar o nome do processo. Isso é útil para oferecer melhor compatibilidade a apps que usam vários processos (aosp/1324732).
Versão 2.4.0-beta01
20 de maio de 2020
Lançamento de 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 e androidx.work:work-testing:2.4.0-beta01. A versão 2.4.0-beta01 contém estas confirmações.
Correções de bugs
- Corrigido um bug em que o
ForegroundServicenão é interrompido depois que umWorkerem primeiro plano é interrompido (b/155579898, aosp/1302153). - Corrigido um bug em que
WorkManagertenta executar várias instâncias de umWorkervinculado a um serviço em primeiro plano (b/156310133, aosp/1309853). - Foi adicionado suporte à adição dinâmica de fábricas para delegação ao usar um
DelegatingWorkerFactory(b/156289105, aosp/1309745). - Alinhamento mais preciso das restrições de
BATTERY_NOT_LOWem relação à plataforma (aosp/1312583).
Versão 2.4.0-alpha03
29 de abril de 2020
androidx.work:work-*:2.4.0-alpha03 é lançado. A versão 2.4.0-alpha03 contém estas confirmações.
Novos recursos
- O WorkManager agora oferece suporte ao RxJava 3. Para usar o RxJava 3, inclua a seguinte dependência:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"(aosp/1277904). - Foi adicionada uma nova regra de lint que garante que as implementações de
ListenableWorkeragora sejampublicao usar aWorkerFactorypadrão (aosp/1291262).
Mudanças na API
- As chamadas para
setProgressAsync()depois da execução de umListenableWorkervão sinalizar umaExceptionusando umListenableFuture(aosp/1285494). WorkQuery.Builderagora está marcado comofinal(aosp/1275037).- Os métodos de fábrica
withStates,withTagsewithUniqueWorkNamesdoWorkQuery.Builderforam renomeados comofromStates,fromTagsefromUniqueWorkNames, respectivamente (aosp/1280287, link em inglês).
Correções de bugs
SecurityExceptions são ignoradas ao rastrear o estado da rede de um dispositivo (b/153246136, aosp/1280813, links em inglês).
Versão 2.4.0-alpha02
1º de abril de 2020
androidx.work:work-*:2.4.0-alpha02 é lançado. A versão 2.4.0-alpha02 contém estas confirmações.
Novos recursos
- Adição de uma nova regra de lint que avisa quando
WorkRequests requeremConstraints.setRequiresCharging(...)eConstraints.setRequiresDeviceIdle(...). Alguns dispositivos nunca estão inativos enquanto estiverem sendo carregados. Se isso ocorresse, essas solicitações seriam executadas com menos frequência do que o esperado (aosp/1253840, link em inglês).
Mudanças na API
Adição da capacidade de consultar
WorkInfos usando umaWorkQuery. Isso é útil quando os desenvolvedores querem procurarWorkInfos com uma combinação de vários atributos. Para saber mais, consulteWorkQuery.Builder withStates(...),WorkQuery.Builder withTags(...)ouWorkQuery.Builder withUniqueWorkNames(...)(aosp/1253230, b/143847546).As chamadas para
setForegroundAsync()que não são concluídas antes da conclusão de umListenableWorkeragora são sinalizadas usando umIllegalStateExceptionnoListenableFutureretornado (aosp/1262743).
Correções de bugs
- Correção da regra de lint que verifica durações de intervalo inválidas para
PeriodicWorkRequests (aosp/1254846, b/152606442, links em inglês).
Versão 2.4.0-alpha01
4 de março de 2020
androidx.work:work-*:2.4.0-alpha01 é lançado. A versão 2.4.0-alpha01 contém estas confirmações.
Novos recursos
O escalonador de processos de
WorkManagers agora está mais capacitado. Anteriormente, o escalonador de processos considerava apenas a execução de trabalhos que não atrasavam e cujas restrições eram atendidas. O escalonador de processos agora monitoraWorkRequests que podem ser executados no futuro, incluindoPeriodicWorkRequests. O escalonador de processos também não observa os limites de programação, mas ainda está restrito ao tamanho doExecutorusado pelo WorkManager. Isso significa que o aplicativo agora pode executar muitos maisWorkRequests quando o app estiver em primeiro plano (aosp/1185778).Adição da capacidade de solicitar informações de diagnóstico do WorkManager usando
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". Isso fornece muitas informações úteis, incluindo:- WorkRequests que foram concluídos nas últimas 24 horas.
- WorkRequests EM EXECUÇÃO no momento.
- WorkRequests agendados (aosp/1235501).
Novas regras de lint que obrigam:
- Uso do
foregroundServiceTypecorreto ao usar APIssetForegroundAsync()(b/147873061, aosp/1215915). - Especificação de IDs
JobSchedulerusados porWorkManagerao usar APIsJobServicediretamente (aosp/1223567, link em inglês).
- Uso do
Mudanças na API
Adição de
ExistingWorkPolicy.APPEND_OR_REPLACE, que é semelhante aAPPEND, mas substitui uma cadeia que cancelou ou não cumpriu os pré-requisitos (b/134613984, aosp/1199640)Capacidade de adicionar um
RunnableSchedulerpersonalizado para monitorarWorkRequests que precisam ser executados no futuro. Isso é usado pelo programador de processos (aosp/1203944, link em inglês).
Correções de bugs
setProgress()foi descontinuado noRxWorkerporque retornava umSingle<Void>, que é um tipo impossível. Adição de uma nova API,setCompletableProgress(), que retorna umCompletable; e de novas regras de lint, que ajudam a migrar para as novas APIs (b/150080946, aosp/1242665).
Versão 2.3.4
Versão 2.3.4
18 de março de 2020
androidx.work:work-*:2.3.4 é lançado. A versão 2.3.4 contém estas confirmações.
Correções de bugs
- Corrigido um bug que causava a execução de várias instâncias de
Workers de execução longa depois de exceder a janela de execução de 10 minutos (aosp/1247484, b/150553353). - Correção do Lint
IssueRegistrydo WorkManager. Agradecemos a @ZacSweers, do Slack, pela contribuição (aosp/1217923, link em inglês).
Versão 2.3.3
Versão 2.3.3
4 de março de 2020
androidx.work:work-*:2.3.3 é lançado. A versão 2.3.3 contém estas confirmações.
Correções de bugs
- Correção de um bug em que, quando um
Workerera interrompido, ele não era reprogramado corretamente (b/150325687, aosp/1246571).
Versão 2.3.2
Versão 2.3.2
19 de fevereiro de 2020
Lançamento de androidx.work:work-*:2.3.2. A versão 2.3.2 contém essas confirmações.
Correções de bugs
- Correção de um problema em que o WorkManager excede o limite de 100 jobs no JobScheduler em casos raros (aosp/1226859, b/149092520).
- Correção de uma disputa em ConstraintControllers (aosp/1220100).
- Melhoria no ciclo de vida em serviço de primeiro plano de gerenciamento para os Workers de longa duração (aosp/1226295).
- Melhoria no gerenciamento do cancelamento de notificações para Workers de longa duração após o cancelamento do Worker (aosp/1228346, link em inglês).
Versão 2.3.1
Versão 2.3.1
5 de fevereiro de 2020
androidx.work:work-*:2.3.1 é lançado. A versão 2.3.1 contém estas confirmações.
Correções de bugs
- Melhoria no gerenciamento do ciclo de vida de
Notifications paraWorkers de longa duração executados quando umServiceestá ativo no primeiro plano (aosp/1218539, b/147249312). WorkManageragora depende deandroidx.sqlite:sqlite-framework:2.1.0estável (aosp/1217729).- Inclusão de regras de lint para garantir que um
foregroundServiceTypeseja especificado noAndroidManifest.xmlao usarforegroundServiceTypes emForegroundInfo(aosp/1214207, b/147873061).
Versão 2.3.0
Versão 2.3.0
22 de janeiro de 2020
androidx.work:work-*:2.3.0 é lançado sem mudanças desde 2.3.0-rc01. A versão 2.3.0 contém estas confirmações.
Mudanças importantes desde a versão 2.2.0
- Foi adicionado suporte para execuções longas ou trabalhos importantes usando o método
ListenableWorker#setForegroundAsync(). - Suporte ao Worker Progress com
ListenableWorker#setProgressAsync(). - O WorkManager agora traz mais regras de lint como parte da biblioteca, o que ajuda a detectar bugs mais cedo.
Versão 2.3.0-rc01
8 de janeiro de 2020
androidx.work:work-*:2.3.0-rc01 é lançado. A versão 2.3.0-rc01 contém estas confirmações.
Essa versão é idêntica a 2.3.0-beta02
Correções de bugs
- O artefato
work-testingagora define uma dependênciaapiemwork-runtime-ktx(aosp/1194410, link em inglês).
Versão 2.3.0-beta02
18 de dezembro de 2019
androidx.work:work-*:2.3.0-beta02 é lançado. A versão 2.3.0-beta02 contém estas confirmações.
Novos recursos
- Adição de uma mensagem de erro melhor para exceções SQLite não recuperáveis (aosp/1185777).
- Foi adicionada uma regra de lint que garante que o provedor de conteúdo
androidx.work.impl.WorkManagerInitializerseja removido doAndroidManifest.xmlao usar a inicialização sob demanda (aosp/1167007). - Adição de um alerta de lint quando
enqueue()é usado paraPeriodicWorkRequest, em vez deenqueueUniquePeriodicWork()(aosp/1166032, link em inglês).
Mudanças na API
ForegroundInfoagora exige que você especifique onotificationIdque será empregado ao usarListenableWorker.setForegroundAsync(). Essa é uma alteração interruptiva. Ela permite que você execute váriosWorkers de execução longa em paralelo.WorkManagertambém gerencia melhor a duração dasNotifications fornecidas (b/145473554, aosp/1181208, asop/1181216, asop/1183577).
Correções de bugs
- Correção de um bug na implementação do AlarmManager em que os alarmes não eram limpos de forma correta (aosp/1156444).
- Correção de um bug em que uma lista vazia de
WorkRequests fazia com que uma cadeia deWorkContinuationincorreta fosse criada (b/142835274, aosp/1157051).
Mudanças na dependência
- O WorkManager agora usa a Room 2.2.2.
Versão 2.3.0-beta01
20 de novembro de 2019
androidx.work:work-*:2.3.0-beta01 é lançado. A versão 2.3.0-beta01 contém estas confirmações.
Novos recursos
- Foi adicionada uma nova regra de lint que evita erros de desenvolvedor devido à implementação incorreta de
androidx.work.Configuration.Providerao usar a inicialização sob demanda (aosp/1164559).
Versão 2.3.0-alpha03
23 de outubro de 2019
androidx.work:work-*:2.3.0-alpha03 é lançado. A versão 2.3.0-alpha03 contém essas confirmações.
Novos recursos
- Foi adicionada a API
WorkManager.createCancelPendingIntent(), que facilita o cancelamento deWorkRequests sem precisar registrar outro componente noAndroidManifest.xml. Essa API facilita o cancelamento deWorkRequests a partir deNotifications. Esperamos que isso seja combinado com as novas APIs de primeiro plano na versão 2.3.0. - O WorkManager agora depende de um
androidx.room:*:2.2.0estável.
Mudanças na API
ForegroundInfo.getNotificationType()foi renomeado comoForegroundInfo.getForegroundServiceType()para ser mais consistente com as APIs de plataforma subjacentes (b/142729893, aosp/1143316).
Correções de bugs
- Correção de um bug causado por uma chamada desnecessária para
setTransactionSuccessful()fora da transação. Isso acontece em migrações raras. (b/142580433, aosp/1141737, links em inglês)
Versão 2.3.0-alpha02
9 de outubro de 2019
androidx.work:work-*:2.3.0-alpha02 é lançado. A versão 2.3.0-alpha02 contém estas confirmações.
Novos recursos
- O WorkManager agora oferece suporte a execuções longas ou trabalhos importantes que precisam ser mantidos ativos pelo SO. Para ver mais informações, consulte
ListenableWorker#setForegroundAsync()(ouCoroutineWorker#setForeground()para Kotlin). (aosp/1133636, link em inglês)
Mudanças na API
- A API
containsKeyemDatafoi renomeada comohasKeyWithValueOfType. O método de extensão correspondente na bibliotecaktxtambém foi renomeado (b/141916545).
Correções de bugs
- As programações do WorkManager funcionam bem quando o número de
WorkRequests em fila se aproximam dos limites de programação (aosp/1105766). - O WorkManager só chama
ListenableWorker#onStopped()se o trabalho ainda não tiver sido concluído (b/140055777). - Agora, o WorkManager remove informações de andamento quando um worker é interrompido ou atinge seu estado terminal (aosp/1114572).
- Agora,
Datatem uma representaçãotoString()muito mais útil (b/140945323). - Agora,
Datatem um métodoequals()melhor. Ele também é compatível comdeepEqualspara tiposArray(b/140922528). - O WorkManager agora armazena o banco de dados interno e os arquivos de preferência em um diretório sem backup (b/114808216, link em inglês)
Versão 2.3.0-alpha01
22 de agosto de 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
ListenableWorkers agora podem definir o progresso usando a APIsetProgressAsync(). Também foi adicionada a APIsuspendsetProgresscorrespondente emCoroutineWorkere umasetProgressemRxWorker, que retorna umSingle<Void>. Com essas novas APIs, os workers podem transmitir informações de andamento usando um objetoWorkInfo, que tem uma APIgetProgresscorrespondente (b/79481554).Datatem uma APIcontainsKey()que pode ser usada para validar que os dados de entrada paraWorkertêm chaves com o tipo esperado (b/117136838, link em inglês)- Agora,
Datapode ser serializado usandoData.toByteArray()eData.fromByteArray(). Não há qualquer garantia de controle de versões comData. Por esse motivo, não persista nele nem o use para IPC entre apps. Ele só é seguro para uso entre vários processos do mesmo app. - Foi adicionada a capacidade de especificar um
InputMergerFactoryusando umConfiguration.setInputMergerFactory(b/133273159, link em inglês).
Mudanças na API
- O WorkManager gera uma instância de
IllegalStateExceptionse umWorkerFactoryretorna uma instância deListenableWorkerque foi invocada anteriormente (b/139554406). - Atualizações da documentação sobre o cancelamento
ListenableFuturee o callbackonStopped()emListenableWorker(b/138413671, link em inglês)
Correções de bugs
- O escalonador de processos agora ignora
WorkRequests com a restriçãoidle. Essas solicitações agora só são atendidas porJobSchedulerquando o dispositivo está realmenteidle(aosp/1089779). TestScheduleragora usa oExecutorespecificado corretamente para o executor de tarefas interno nos testes (aosp/1090749, link em inglês)
Versão 2.2.0
Versão 2.2.0
15 de agosto de 2019
androidx.work:work-*:2.2.0 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link (em inglês).
Essa versão é idêntica a androidx.work:work-*:2.2.0-rc01.
Alterações importantes feitas na versão 2.2.0 em comparação à 2.1.0
androidx.work:work-gcm:2.2.0 é um novo artefato Maven compatível com o uso de GCMNetworkManager como programador quando o Google Play Services está disponível para APIs de nível igual ou superior a 22. Essa é uma dependência opcional que ajuda no processamento em segundo plano mais confiável e com melhor desempenho em versões de API mais antigas. Se seu app usa o Google Play Services, adicione essa dependência ao arquivo do Gradle para ser automaticamente compatível com o GCMNetworkManager. Se o Google Play Services não estiver disponível, o WorkManager continuará retornando ao AlarmManager em dispositivos mais antigos.
Versão 2.2.0-rc01
30 de julho de 2019
androidx.work:work-*:2.2.0-rc01 é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
Correções de bugs
- Correção de um bug na implementação de AlarmManager que fazia com que o Service fosse encerrado prematuramente. Em casos raros, isso resultava em uma
RejectedExecutionException(aosp/1092374e b/138238197). - Adicionada uma solução alternativa para
NullPointerExceptionao usar APIsJobSchedulerem alguns dispositivos (aosp/1091020) (b/138364061), (b/138441699).
Versão 2.2.0-beta02
19 de julho de 2019
androidx.work:work-*:2.2.0-beta02 é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
Correções de bugs
- Remoção da dependência não intencional do Jacoco, introduzida no
2.2.0-beta01.
Versão 2.2.0-beta01
17 de julho de 2019
androidx.work:work-*:2.2.0-beta01 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
androidx.work:work-gcm:2.2.0-beta01é um novo artefato Maven compatível com o uso de GCMNetworkManager como programador quando o Google Play Services está disponível para APIs de nível igual ou superior a 22. Essa é uma dependência opcional que ajuda no processamento em segundo plano mais confiável e com melhor desempenho em versões de API mais antigas. Se seu app usa o Google Play Services, adicione essa dependência ao arquivo do Gradle para ser automaticamente compatível com o GCMNetworkManager. Se o Google Play Services não estiver disponível, o WorkManager continuará retornando ao AlarmManager em dispositivos mais antigos.
Correções de bugs
- Correção para
IllegalArgumentExceptionao rastrear o estado da rede em tablets Nvidia Shield K1 (aosp/1010188).
Versão 2.1.0
Versão 2.1.0
11 de julho de 2019
Lançamento de androidx.work:work-*:2.1.0. Essa versão é idêntica a androidx.work:work-*:2.1.0-rc01.
Mudanças importantes desde a versão 2.0.1
work-runtime-ktxagora exige Java 8. Se você encontrar algum problema, adicione o seguinte abuild.gradle:kotlinOptions { jvmTarget = "1.8" }- Foi adicionada a inicialização sob demanda, que cria o WorkManager
somente quando ele é referenciado (b/127497100). Para configurar o projeto para inicialização sob demanda:
- Desative o inicializador automático.
- Implemente
Configuration.Providerno seu objetoApplicationpersonalizado. - Mude todas as referências de
WorkManager.getInstance()paraWorkManager.getInstance(Context). Como parte dessa mudança, suspendemos o uso deWorkManager.getInstance(). É sempre mais seguro chamar a nova substituição deWorkManager.getInstance(Context), mesmo que você não esteja inicializando sob demanda.
PeriodicWorkRequests agora são compatíveis com atrasos iniciais. Você pode usar o métodosetInitialDelayemPeriodicWorkRequest.Builderpara definir um atraso inicial (b/111404867).- Adicionada a capacidade de delegar a um ou mais
WorkerFactorys registrados usandoDelegatingWorkerFactoryb/131435993 (link em inglês). - Adicionada a capacidade de usar
Configuration.Builder.setTaskExecutorpara personalizar oExecutorusado pelo WorkManager para todos os registros internos. - Adicionada a capacidade de criar classes de unidades testáveis
WorkereListenableWorkerusandoTestWorkerBuildereTestListenableWorkerBuilderno artefatowork-testing.work-testingagora atrai Kotlin como uma dependência e inclui várias extensões Kotlin por padrão.
- Adicionada contagem de tentativas de execução no
WorkInfo(b/127290461). - Tipos de
Dataagora podem armazenar e recuperar bytes e matrizes de bytes. Isso NÃO muda o tamanho máximo dos objetosData. - O WorkManager agora depende de
Room 2.1.0, o que corrige alguns problemas do banco de dados.
Versão 2.1.0-rc01
27 de junho de 2019
androidx.work:work-*:2.1.0-rc01 é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
Correções de bugs
- Corrigido um bug que fazia o aplicativo falhar ao executar jobs com
JobSchedulerenquanto um backup estava em andamento (b/135858602).
Versão 2.1.0-beta02
20 de junho de 2019
androidx.work:work-*:2.1.0-beta02 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- Agora,
TestListenableWorkerBuilderusa o métodoWorkerFactorycorreto ao criar instâncias deListenableWorker(b/135275844). - Corrigido um bug que causava desvios nas janelas de execução para
WorkRequests devido ao término do processo (b/135272196).
Versão 2.1.0-beta01
13 de junho de 2019
androidx.work:work-*:2.1.0-beta01 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- O WorkManager agora depende de
Room 2.1.0, o que corrige alguns problemas do banco de dados. - Remoção de algumas E/S do disco de inicialização no thread principal.
- Correção de um possível impasse no rastreamento de restrições (b/134361006).
- Cancelamento antecipado de tarefas inválidas atribuídas ao WorkManager (b/134058261).
- Adição de algumas chamadas defensivas às APIs do JobScheduler para dispositivos com comportamento inadequado.
Versão 2.1.0-alpha03
5 de junho de 2019
Lançamento de androidx.work:*:2.1.0-alpha03.
Correções de bugs
- Documentação aprimorada para
PeriodicWorkRequests. - Agora,
WorkManagerTestInitHelperusa o executor de segundo plano correto para testes. - Correções de problemas do SQLite ao lidar com grandes transações em alguns dispositivos (b/130182503).
- As dependências do WorkManager agora são mais granulares (b/133169148).
- Solução alternativa para bugs específicos do OEM na implementação de
JobSchedulerao programar tarefas usando o WorkManager. - Melhorias no programador baseado em AlarmManager com relação aos ciclos de vida do serviço, que anteriormente causava falhas raras (b/133313734).
Versão 2.1.0-alpha02
16 de maio de 2019
Lançamento do WorkManager 2.1.0.0-alpha02. Essa versão contém várias APIs novas.
Mudanças na API
PeriodicWorkRequests agora são compatíveis com atrasos iniciais. Você pode usar o métodosetInitialDelayemPeriodicWorkRequest.Builderpara definir um atraso inicial (b/111404867).Adicionada a capacidade de delegar a um ou mais
WorkerFactorys registrados usandoDelegatingWorkerFactoryb/131435993 (link em inglês).Adicionada a capacidade de usar
Configuration.Builder.setTaskExecutorpara personalizar oExecutorusado pelo WorkManager para todos os registros internos.Melhorada a documentação sobre
WorkRequest.keepResultsForAtLeast(b/130638001)., inicialização sob demanda ePeriodicWorkRequest.Builder(b/131711394).
Versão 2.1.0-alpha01
24 de abril de 2019
Lançamento do WorkManager 2.1.0-alpha01. Essa versão contém várias APIs novas. A partir dessa versão, haverá novos recursos sem backport com a versão 1.x. Recomendamos que você mude para 2.x.
Mudanças na API
- Foi adicionada a inicialização sob demanda, que cria o WorkManager
somente quando ele é referenciado (b/127497100). Para configurar o projeto para inicialização sob demanda:
- Desative o inicializador automático.
- Implemente
Configuration.Providerno seu objetoApplicationpersonalizado. - Mude todas as referências de
WorkManager.getInstance()paraWorkManager.getInstance(Context). Como parte dessa mudança, suspendemos o uso deWorkManager.getInstance(). É sempre mais seguro chamar a nova substituição deWorkManager.getInstance(Context), mesmo que você não esteja inicializando sob demanda.
- Adicionada a capacidade de criar classes de unidades testáveis
WorkereListenableWorkerusandoTestWorkerBuildereTestListenableWorkerBuilderno artefatowork-testing.work-testingagora atrai Kotlin como uma dependência, mas também inclui várias extensões Kotlin por padrão.
- Adicionada contagem de tentativas de execução no
WorkInfo(b/127290461). - Tipos de
Dataagora podem armazenar e recuperar bytes e matrizes de bytes. Isso NÃO muda o tamanho máximo dos objetosData. - O uso de
CoroutineWorker.coroutineContextfoi suspenso. Esse campo foi digitado incorretamente como umCoroutineDispatcher. Ele não é mais necessário, uma vez que você pode ir para o coroutineContext relevante no corpo da função de suspensão. RxWorker.createWork()eRxWorker.getBackgroundScheduler()agora estão anotados com tipos de retorno@NonNull.
Versão 2.0.1
Versão 2.0.1
9 de abril de 2019
Lançamento do WorkManager 2.0.1. Essa versão é idêntica à 2.0.1-rc01.
Versão 2.0.1-rc01
3 de abril de 2019
Lançamento do WorkManager 2.0.1-rc01. Essa versão contém algumas correções de bugs. Para usuários da versão anterior 1.x, algumas dessas mudanças também aparecem em 1.0.1-rc01.
Correções de bugs
- Os testes Robolectric agora funcionam corretamente com o WorkManager (b/122553577).
- Corrigida uma falha de caso extremo com o rastreamento de restrições não sendo limpo nas APIs anteriores ao JobScheduler (b/129226383).
- Correção de um
StackOverflowErrorque processa longas cadeias de trabalho (b/129091233). - A documentação de
PeriodicWorkRequests foi atualizada, indicando que o horário flexível não tem suporte na API de nível 23. - Correção de alguns links corrompidos na documentação do Kotlin.
Versão 2.0.0
Versão 2.0.0
20 de março de 2019
Lançamento do WorkManager 2.0.0. Esta versão é idêntica à 2.0.0-rc01 e é a versão AndroidX do 1.0.0 estável com dependências do AndroidX. Recomendamos usar essa versão como destino em vez das versões 1.x anteriores. Todo o desenvolvimento ativo é destinado à 2.x, e a 1.x recebe apenas correções de bugs essenciais por um tempo limitado.
Versão 2.0.0-rc01
7 de março de 2019
Lançamento do WorkManager 2.0.0-rc01. Essa versão é idêntica à 1.0.0 estável, mas tem dependências do AndroidX. Quando essa versão chegar à 2.0.0 estável, você deverá incluí-la, e as versões anteriores 1.x receberão apenas algumas correções de bugs essenciais. Todo o desenvolvimento ativo será destinado à 2.x.
Dependências anteriores ao AndroidX
Documentos de referência: Java
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
Versão 1.0.1
Versão 1.0.1
9 de abril de 2019
Lançamento do WorkManager 1.0.1. Essa versão é idêntica à 1.0.1-rc01.
É altamente recomendável que os usuários atualizem para o WorkManager 2.x, uma vez que haverá cada vez menos atualizações para as ramificação do 1.x daqui em diante. Além disso, APIs novas não serão lançadas para a biblioteca 1.x.
Versão 1.0.1-rc01
2 de abril de 2019
Lançamento do WorkManager 1.0.1-rc01. Essa versão contém algumas correções de bugs.
Correções de bugs
- Os testes Robolectric agora funcionam corretamente com o WorkManager (b/122553577).
- Corrigida uma falha de caso extremo com o rastreamento de restrições não sendo limpo nas APIs anteriores ao JobScheduler (b/129226383).
- Correção de um
StackOverflowErrorque processa longas cadeias de trabalho (b/129091233).
Versão 1.0.0
Versão 1.0.0
5 de março de 2019
Essa é a versão estável 1.0.0 do WorkManager. Essa versão do WorkManager é idêntica à 1.0.0-rc02.
Versão 1.0.0-rc02
21 de fevereiro de 2019
Esse é o segundo candidato a lançamento para a versão estável 1.0.0 do WorkManager. Essa versão contém duas correções de bugs.
Correções de bugs
Workers são programados corretamente após uma falha no aplicativo (b/124546316).Workers que geram umaExceptiondesmarcada agora são marcados corretamente comoFAILEDe não causam mais falha no processo do app.
Versão 1.0.0-rc01
14 de fevereiro de 2019
Esse é um candidato a lançamento para a versão estável 1.0.0 do WorkManager. Essa versão contém uma correção de bug.
Correções de bugs
- A implementação baseada em AlarmManager agora respeita corretamente as janelas
flexpara PeriodicWorkRequests (b/124274584).
Versão 1.0.0-beta05
6 de fevereiro de 2019
Essa versão contém algumas correções de bugs.
Correções de bugs
- Correção de um caso em que
JobScheduler.getPendingJob(...)era usado na API 23 (b/123893059). - Correção de uma
NullPointerExceptionem dispositivos com Android 5.1 (API de nível 22) ou anterior (b/123835104).
Versão 1.0.0-beta04
4 de fevereiro de 2019
Essa versão contém algumas correções de bugs.
Correções de bugs
- Melhoria na programação de PeriodicWork para a implementação baseada no AlarmManager.
- Correção de um caso em que o WorkManager não rastreava corretamente as restrições durante o uso da implementação baseada no AlarmManager (b/123379508).
- Correção de um caso em que o WorkManager não repetia o trabalho no término do processo durante o uso da implementação baseada no AlarmManager (b/123329850).
- Correção de um caso que fazia o WorkManager vazar Wakelocks ao usar a implementação baseada no AlarmManager.
Versão 1.0.0-beta03
25 de janeiro de 2019
Essa versão contém algumas correções de bugs.
Correções de bugs
- Introdução de uma regressão
1.0.0-beta02que fazia com que o trabalho não fosse executado corretamente em algumas situações (b/123211993). - Correção de um caso em que o trabalho não respeitava corretamente o tempo de espera (b/122881597).
- Correção de uma
ConcurrentModificationExceptionem dispositivos com Android 5.1 (API) ou versão anterior. Essa é uma continuação da correção em1.0.0-beta02b/121345393 (link em inglês). - Adicionado
exported=falsepara alguns componentes no nosso manifesto que estavam ausentes nessa anotação. - Incluídas informações sobre como o WorkManager interage com o SO na documentação do pacote.
Versão 1.0.0-beta02
15 de janeiro de 2019
Essa versão contém algumas correções de bugs.
Correções de bugs
- Correção de um caso extremo em que o trabalho periódico podia ser executado mais de uma vez por intervalo em dispositivos com Android 6.0 (API de nível 23) (b/121998363).
- Correção de uma
ConcurrentModificationExceptionem dispositivos com Android 5.1 (API de nível 22) ou anterior (b/121345393). - Correção da execução incorreta do trabalho quando Restrições não eram cumpridas em dispositivos com Android 5.1 (API de nível 22) ou anterior (b/122578012).
- Otimizado o manuseio da conclusão do trabalho para ganhar agilidade em alguns casos extremos (b/122358129).
- Foi adicionada uma mudança para solucionar possíveis disputas entre várias instâncias de
LiveDatausadas pela WorkManager. - Mudança para usar a dependência
Room1.1.1em vez de1.1.1-rc01. Essas versões são idênticas ((b/122578011).
Versão 1.0.0-beta01
19 de dezembro de 2018
Essa versão não tem mudanças de API. Futuramente, espera-se que o WorkManager continue com a API estável até a próxima versão, a não ser que ocorra um problema crítico. Essa versão contém algumas correções de bugs.
Correções de bugs
- Os filhos cancelados anteriormente do trabalho pai concluído não serão mais executados. b/120811767
- Inicialização correta de classes de geração de registros (exibidas principalmente durante testes).
Versão 1.0.0-alpha13
12 de dezembro de 2018
Essa versão contém uma pequena mudança na API que será útil para alguns usuários do Kotlin.
Mudanças na API
androidx.work.Resultfoi movido para ser uma classe interna deListenableWorker. Isso evita conflitos de refatoração com a classeResultde nível superior do Kotlin. Esta é uma mudança importante da API. b/120564418 (link em inglês).
Alterações interruptivas da API
androidx.work.Resultfoi movido para ser uma classe interna deListenableWorker.
Versão 1.0.0-alpha12
5 de dezembro de 2018
Essa versão contém alterações interruptivas da API. Consulte a seção Alterações interruptivas da API abaixo. Esta versão provavelmente será lançada como nossa primeira versão beta. alpha12 também contém extensas atualizações de documentação.
Mudanças na API
work-rxjava2, um novo artefato, apresentaRxWorker. Esse é umListenableWorkerque espera umSingle<Payload>.- O suporte ao Firebase JobDispatcher foi removido devido à descontinuação de uso iminente. Isso significa que o artefato
work-firebasenão vai ser mais atualizado quando passarmos para a versão Beta. Pretendemos adicionar uma alternativa no futuro. - Junção de
PayloadcomResult.Resultagora é uma "classe fechada" com três implementações concretas, que você pode conseguir por meio deResult.success()(ouResult.success(Data)),Result.failure()(ouResult.failure(Data)) eResult.retry(). SeusListenableFutures agora resultam emResultem vez dePayload.Workers não têm métodos getter e setter para a saídaData. Essa é uma alteração interruptiva. - Foram adicionados
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit),Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)e variantes para oferecer melhor suporte a URIs de conteúdo de acionamento lento (b/119919774). - Adição da variante
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). Este método requer a API 26. - Adicionados métodos de extensão Kotlin
Operation.await()eListenableFuture.await(). - A função
Operation.getException()foi renomeada comoOperation.getThrowable(). Essa é uma alteração interruptiva. - A classe
ContentUriTriggerse os métodos que se referem a ela não estão mais disponíveis para uso público. Essa é uma alteração interruptiva. - Removido o restante dos métodos varargs em
WorkManager,WorkContinuationeOneTimeWorkRequestpara simplificar a API. Para corrigir qualquer problema de compilação, você pode agrupar varargs já existentes comArrays.asList(...). Também incluímos versões de argumento único de cada método. Essa é uma alteração interruptiva. - Removidas as variantes
WorkContinuation.combine(OneTimeWorkRequest, *). Elas apresentavam uma API confusa. Os métodoscombinejá existentes são mais compreensíveis. Essa é uma alteração interruptiva.
Correções de bugs
- As implementações pré-Marshmallow agora são mais confiáveis na recuperação da interrupção do processo de uma tarefa que já está em execução.
- O
LiveDataque é observado comobserveForeveré rastreado pela WorkManager. Essa é uma retrocompatibilidade de uma correção da biblioteca Room b/74477406 (link em inglês) Data.Builder.build()agora gera uma exceção quando o objeto serializado excede ao tamanho máximo. Antes, isso só acontecia em um encadeamento em segundo plano quando não era possível gerenciar isso corretamente.- Maior diferenciação entre o trabalho parado e o cancelado.
getWorkInfoById()retornará umWorkInfocom oCANCELLEDStateduranteListenableWorker.onStopped(). - Trate
nullResults como falhas emListenableWorker(b/120362353). - Correção especulativa para Shield Tablets com a API 24, que às vezes gerava uma
IllegalArgumentException(b/119484416).
Alterações interruptivas da API
- O suporte ao Firebase JobDispatcher foi removido devido à descontinuação de uso iminente. Isso significa que o artefato
work-firebasenão vai ser mais atualizado quando passarmos para a versão Beta. Pretendemos adicionar uma alternativa no futuro. - Junção de
PayloadcomResult.Resultagora é uma "classe fechada" com três implementações concretas, que você pode conseguir por meio deResult.success()(ouResult.success(Data)),Result.failure()(ouResult.failure(Data)) eResult.retry(). SeusListenableFutures agora resultam emResultem vez dePayload.Workers não têm métodos getter e setter para a saídaData. - Adicionados métodos de extensão Kotlin
Operation.await()eListenableFuture.await(). Operation.getException()foi renomeado comoOperation.getThrowable().- A classe
ContentUriTriggerse os métodos que se referem a ela não estão mais disponíveis para uso público. - Removido o restante dos métodos varargs em
WorkManager,WorkContinuationeOneTimeWorkRequestpara simplificar a API. Para corrigir qualquer problema de compilação, você pode agrupar varargs já existentes comArrays.asList(...). Também incluímos versões de argumento único de cada método. - Removidas as variantes
WorkContinuation.combine(OneTimeWorkRequest, *). Elas apresentavam uma API confusa. Os métodoscombinejá existentes são mais compreensíveis.
Versão 1.0.0-alpha11
8 de novembro de 2018
Esta versão contém muitas alterações que deixarão a API estável na beta.
Existem mudanças importantes na API nessa versão. Consulte a seção Mudanças importantes da API abaixo.
Mudanças na API
work-runtime-ktxintroduz um novoCoroutineWorker.WorkStatusfoi renomeado comoWorkInfo. Todas as variantes correspondentes do métodogetStatusforam renomeadas para as variantesgetWorkInfocorrespondentes. Essa é uma alteração interruptiva.ListenableWorker.onStopped()não aceita mais ter um argumento booleano indicando seWorkRequestfoi cancelado.WorkManagernão faz mais essa distinção. Essa é uma alteração interruptiva.- O pacote
androidx.work.testfoi renomeado comoandroidx.work.testing. Essa é uma alteração interruptiva. - Setters em
Constraintsnão fazem mais parte da API pública. Essa é uma alteração interruptiva.. WorkerParameters.getTriggeredContentUris()eWorkerParameters.getTriggeredContentAuthorities()antes retornavam matrizes. Agora, esses métodos retornam coleções. Essa é uma alteração interruptiva.ListenableWorker.onStartWork()foi renomeado comoListenableWorker.startWork(). Essa é uma alteração interruptiva.- O construtor do
WorkStatusnão faz mais parte da API pública. Essa é uma alteração interruptiva. Configuration.getMaxJobSchedulerID()eConfiguration.getMinJobSchedulerID()são renomeados comoConfiguration.getMinJobSchedulerId()eConfiguration.getMaxJobSchedulerId(), respectivamente. Essa é uma alteração interruptiva.- Adicionadas muitas anotações
@NonNullà API pública para melhorar a ergonomia da API. - Adicionada API
WorkManager.enqueueUniqueWork()para enfileirarOneTimeWorkRequests exclusivas sem precisar criar umWorkContinuation. - Todas as variantes dos métodos
enqueueecancelemWorkManageragora retornam um novo tipoOperation. Essa é uma alteração interruptiva. - Todas as variantes de
enqueuenão aceitam mais varargs paraWorkRequests. Essa é uma alteração interruptiva. Use Coleções em vez disso. Você pode usarArrays.asList()para modificar o código existente. Fizemos isso para reduzir a superfície da API e a contagem de métodos. - A tentativa de
initializeWorkManagermais de uma vez por processo agora resulta em umaIllegalStateException. Essa é uma alteração interruptiva.
Correções de bugs
WorkRequest.Builders no artefatowork-runtime-ktxagora usamListenableWorkers. Corrige b/117666259.- Verifique se o próximo tempo de execução para
PeriodicWorkserá no futuro. Corrige b/118204399. - Remover possível E/S do disco ao usar a WorkManager na inicialização do app. Corrige b/117796731.
- Corrigir uma disputa em
WorkConstraintsTracker. Corrige android-workmanager/issues/56
Alterações interruptivas da API
WorkStatusfoi renomeado comoWorkInfo. Todas as variantes correspondentes do métodogetStatusforam renomeadas para as variantesgetWorkInfocorrespondentes.ListenableWorker.onStopped()não aceita mais ter um argumento booleano indicando seWorkRequestfoi cancelado.WorkManagernão faz mais essa distinção.- O pacote
androidx.work.testfoi renomeado comoandroidx.work.testing. - Os setters em
Constraintsnão fazem mais parte da API pública. WorkerParameters.getTriggeredContentUris()eWorkerParameters.getTriggeredContentAuthorities()antes retornavam matrizes. Agora, esses métodos retornam Coleções.ListenableWorker.onStartWork()foi renomeado comoListenableWorker.startWork().- O construtor do
WorkStatusnão faz mais parte da API pública. Configuration.getMaxJobSchedulerID()eConfiguration.getMinJobSchedulerID()são renomeados comoConfiguration.getMinJobSchedulerId()eConfiguration.getMaxJobSchedulerId(), respectivamente.- Todas as variantes dos métodos
enqueueecancelemWorkManageragora retornam um novo tipoOperation. - Todas as variantes de
enqueuenão aceitam mais varargs paraWorkRequests. - A tentativa de
initializeWorkManagermais de uma vez por processo agora resulta em umaIllegalStateException.
Versão 1.0.0-alpha10
11 de outubro de 2018
Essa versão é compatível com o trabalho assíncrono controlado pelo desenvolvedor. Existem mudanças importantes na API nessa versão. Consulte a seção Mudanças importantes da API abaixo.
Prevemos que a WorkManager estará entrando nas fases finais do período Alfa. Esperamos ter uma API estável em versão Beta. Por isso, pedimos que envie seu feedback sobre nosso rastreador de problemas.
Mudanças na API
- Removidos todos os métodos e classes
deprecatedanteriores, principalmente o construtor padrãoWorker. Essa é uma alteração interruptiva da API. NonBlockingWorkerfoi renomeado paraListenableWorker, que agora é uma classe pública reexibida e pronta para uso.ListenableWorkerfornece acesso a um método abstrato,ListenableFuture<Payload> onStartWork(), que é chamado na linha de execução principal. Cabe a você iniciar e processar o trabalho de forma assíncrona. Quando terminar, atualizeListenableFuturecorretamente. As implementações de referência deListenableFutures são fornecidas no pacoteFuturesemalpha02(veja abaixo a seçãoWorkManager).WorkerestendeListenableWorkere ainda funciona como antes, com um métodoResult doWork()abstrato.- Alguns métodos e membros foram embaralhados de
WorkerparaListenableWorker. - Em breve, forneceremos implementações de referência para
ListenableWorkers que usam corrotinas Kotlin (assim que as versões estáveis forem lançadas) e RxJava2.
- A interface
WorkerFactorye a implementação concretaDefaultWorkerFactoryforam mescladas em uma classe abstrata chamadaWorkerFactory. A implementação assegura que o comportamento padrão baseado em reflexão seja chamado como um esforço de última hora para qualquer instânciaWorkerFactorycriada pelo usuário. Essa é uma alteração interruptiva. - Removidos
WorkManager.synchronous()eWorkContinuation.synchronous()e todos os métodos relacionados.ListenableFuture<Void>foi adicionado como o tipo de retorno de vários métodos na API. Essa é uma alteração interruptiva da API.- Agora
ListenableFutures podem ser usados para trabalho e observação de forma assíncrona. Por exemplo,WorkManager.enqueue()retornavavoide agora retorna umListenableFuture<Void>. Você pode chamarListenableFuture.addListener(Runnable, Executor)ouListenableFuture.get()para executar o código depois que a operação é concluída. - Observe que esses
ListenableFutures não informam se a operação foi bem-sucedida ou falhou, apenas que ela foi concluída. Você ainda precisará encadear os métodos da WorkManager para descobrir essas informações. - Ignoramos as chamadas
cancel()nesses objetos porque elas são confusas e difíceis de compreender (você está cancelando a operação ou o trabalho resultante?). Isso está no contratoFutures. - Para manter a paridade com os métodos
getStatus*síncronos, fornecemos variantesListenableFuturee renomeamos os já existentes que retornaramLiveDatapara ter explicitamente "LiveData" como parte do nome (por exemplo,getStatusesByIdLiveData(UUID)). Essa é uma alteração interruptiva da API.
- Agora
Correções de bugs
- Correção do problema conhecido de alpha09 com relação a arquivos
androidx-annotations.produplicados. Você pode remover a solução alternativa das notas da versão anteriores excluindoexclude 'META-INF/proguard/androidx-annotations.pro'do arquivo do Gradle. - Configurações do ProGuard foram adicionadas para manter o novo construtor
Worker(b/116296569). - Correção de possível
NullPointerExceptionem uma disputa em que o trabalho eraREPLACE(b/116253486 e b/116677275). WorkContinuation.combine()agora aceita um ou maisWorkContinuations em vez de dois ou mais (b/117266752).
Alterações interruptivas da API
- Removidos todos os métodos e classes
deprecatedanteriores, principalmente o construtor padrãoWorker. - A interface
WorkerFactorye a implementação concretaDefaultWorkerFactoryforam mescladas em uma classe abstrata chamadaWorkerFactory. - Removidos
WorkManager.synchronous()eWorkContinuation.synchronous(). - Métodos
WorkManager.getStatus*()agora retornamListenableFutures.WorkManager.getStatus*LiveData()retornaLiveDatas.
Versão 1.0.0-alpha09
19 de setembro de 2018
Problema conhecido
Se você encontrar o seguinte problema: "Mais de um arquivo foi encontrado com o caminho independente do SO 'META-INF/proguard/androidx-annotations.pro'", coloque o seguinte no seu arquivo do Gradle como uma solução temporária enquanto corrigimos o problema em alpha10:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Correções de bugs
- Adição de outra correção necessária para o erro "100 jobs" (b/115560696).
- Foram adicionadas algumas correções para erros de restrição de chave externa devido a disputas (b/114705286).
- Chamadas
ConstraintTrackingWorker.onStopped(boolean)foram delegadas para oWorkersubjacente (b/114125093). - Imposição do atraso mínimo de retirada correto para o Firebase JobDispatcher (b/113304626).
- Melhoradas as garantias de encadeamento internas para a biblioteca.
- Corrigido um possível problema com a deduplicação de
LiveDatainternamente.
Mudanças na API
- Agora você pode criar suas instâncias
Workerno momento da execução especificando umaWorkerFactorycomo parte daWorkManager.Configuration. A fábrica de substituição éDefaultWorkerFactory, que corresponde ao comportamento das versões anteriores da WorkManager.- Os construtores padrão para
WorkereNonBlockingWorkeragora estão marcados como obsoletos. Use o novo construtor (Worker(Context, WorkerParameters)) e chamesuper(Context, WorkerParameters). Futuras versões da WorkManager vão remover o construtor padrão.
- Os construtores padrão para
- Começamos a usar o novo artefato
ListenableFutureinternamente (sem dependências do Guava). Introduziremos o ListenableFutures à API nas próximas versões. Essa mudança vai oferecer suporte com o eventual envio deNonBlockingWorker. - Foi adicionada a capacidade de acionar o trabalho cronometrado no
TestDriverusandoTestDriver.setInitialDelayMet(UUID)eTestDriver.setPeriodDelayMet(UUID)(b/113360060).
Mudanças importantes
- O uso dos construtores padrão
WorkereNonBlockingWorkerfoi suspenso. Migre para o novo construtor o mais rápido possível. Versões futuras removerão o construtor padrão.
Versão 1.0.0-alpha08
27 de agosto de 2018
Correções de bugs
- Os componentes da WorkManager foram explicitamente identificados como sem reconhecimento de inicialização direta para que não sejam acionados nessa fase. No futuro, forneceremos uma versão da WorkManager com reconhecimento de inicialização direta (b/112665532).
- Correção de um problema em que o trabalho repetido não era executado (b/112604021).
- Correção de trabalho periódico fixo não executado repetidamente (relacionado ao problema acima). b/112859683
- Políticas de retirada respeitadas quando o processo do app já está em execução.
- Correção das mensagens de exceção em
Datapara indicar que o limite é 10 KB. - Redução do valor máximo de
Configuration.setMaxSchedulerLimit(int)para 50, a fim de compensar a latência na conclusão do processamento doJobScheduler(b/112817355).
Versão 1.0.0-alpha07
16 de agosto de 2018
Correções de bugs
- Correção de uma possível consulta SQL com limites negativos que poderia retornar um número ilimitado de resultados.
- O trabalho cuja execução foi concluída agora cancela corretamente todas as cópias pendentes desse trabalho em outros Programadores. Isso fez com que o limite de tarefas do
JobSchedulerfosse excedido (b/111569265). - Correção de uma
ConcurrentModificationExceptionemConstraintTracker(b/112272753). - Mudadas as anotações de tipo de retorno de
Data.getBooleanArray(String)eData.getIntArray(String)para@Nullableem vez de@NonNull(b/112275229).
Mudanças na API
Workeragora estende uma nova classe,NonBlockingWorker. Isso não afeta nenhum uso atual. No futuro,NonBlockingWorkervai se tornar uma entidade com suporte total a soluções de linha de execução personalizadas.- Mudadas as anotações de tipo de retorno de
Data.getBooleanArray(String)eData.getIntArray(String)para@Nullableem vez de@NonNull(b/112275229). - Extensões Kotlin: suspensão do uso de
Map.toWorkData()e adição de umworkDataOf(vararg Pair<String, Any?>)de nível superior para ser mais consistente com as APIs já existentes.
Versão 1.0.0-alpha06
1º de agosto de 2018
Correções de bugs
- Impedir um bloqueio de banco de dados ao programar o trabalho (b/111801342).
- Corrigido um bug que fazia com que o
PeriodicWorknão fosse executado na programação durante o modo Soneca (b/111469837). - Corrigida uma disputa ao rastrear restrições que causava falhas no
WorkManager(googlecodelabs/android-workmanager/issues/56). - Criadas
WorkRequests exclusivas ao usarWorkRequest.Builder#build()(b/111408337). - Permissão do uso de
RescheduleReceiversomente quando houverWorkRequests que precisem dele (b/111765853).
Versão 1.0.0-alpha05
24 de julho de 2018
Mudanças na API
- O
WorkManager.getInstance()agora é anotado com@NonNullem vez de@Nullable. Agora, se o singleton não é inicializado corretamente manualmente, o método gera umaIllegalStateException. Essa é uma alteração interruptiva da API. - Foi adicionada uma nova API,
Configuration.Builder.setMinimumLoggingLevel(int), que pode controlar o detalhamento da WorkManager. Por padrão, a WorkManager registraLog.INFOe acima. - Mudança da assinatura de
Data.getString(), para que ela não aceite mais um valor padrão (é implicitamentenull). Essa é uma alteração interruptiva da API. - Marcados alguns métodos necessários apenas para uso interno como
@hide. Isso inclui o construtorConstraints,Data.toByteArray()eData.fromByteArray(byte[]). Essa é uma alteração interruptiva da API.
Correções de bugs
- A WorkManager não executa mais o trabalho durante casos conhecidos de backup automático. Isso poderia ter causado uma falha (b/110564377).
- Correção da programação dupla de
PeriodicWorkRequests ao usar oJobScheduler(b/110798652). - Correção de um problema com
PeriodicWorkRequests que não eram executados corretamente depois da ativação do modo Soneca no dispositivo (b/111469837). - Correção de um problema com atrasos iniciais ao usar o Firebase JobDispatcher (b/111141023).
- Correção de certos problemas de disputa e timing em potencial.
- Liberação devida de
BroadcastReceivers que não eram mais necessários. - Otimização do desempenho de reprogramação quando os apps são reiniciados após o fechamento forçado.
- Concedida a permissão para
TestScheduler.setAllConstraintsMet(UUID)ser chamado antes ou depois de enfileirar oWorkRequestespecificado (b/111238024).
Mudanças importantes
- O
WorkManager.getInstance()agora é anotado com@NonNullem vez de@Nullable. - Mudança da assinatura de
Data.getString(), para que ela não aceite mais um valor padrão (é implicitamentenull). - Marcados alguns métodos necessários apenas para uso interno como
@hide. Isso inclui o construtorConstraints,Data.toByteArray()eData.fromByteArray(byte[]).
Versão 1.0.0-alpha04
26 de junho de 2018
Correções de bugs
PeriodicWorkRequests agora são reprogramadas corretamente ao usar a implementação baseada emAlarmManager.- Corrigido um possível ANR ao reprogramar todos os workers após um fechamento forçado ou uma reinicialização (b/110507716).
- Adição de anotações de anulação a várias APIs da WorkManager (b/110344065).
- Registro de exceções não identificadas que ocorrem durante a execução do Worker (b/109900862).
- Permissão de migrações de banco de dados destrutivas caso você decida reverter para uma versão mais antiga da WorkManager (b/74633270).
- Correção de uma falha de migração ao criar tags implícitas duplicadas. Esse é um problema muito raro que ocorria apenas se você utilizasse o mesmo formato de tag implícito.
Versão 1.0.0-alpha03
19 de junho de 2018
Correções de bugs
Correção de uma disputa na implementação baseada no
AlarmManager(b/80346526).Correção de jobs duplicados ao usar o
JobSchedulerapós a reinicialização do dispositivo.Jobs com acionadores de URI de conteúdo agora persistem entre reinicializações (b/80234744).
Atualizações de documentação (b/109827628, b/109758949, b/80230748).
Correção de uma falha ao reposicionar um
WorkRequestna fila (b/109572353).Correção de avisos do compilador Kotlin ao usar a dependência
work-runtime-ktx.A WorkManager agora usa
Roomversão1.1.1-rc1.
Mudanças na API
- Adição de
getStatusesSync(), a versão síncrona deWorkContinuation.getStatuses(). Workerconsegue distinguir entre o cancelamento iniciado pelo usuário e a interrupção temporária solicitada pelo SO.Worker.isStopped()retornatruequando qualquer tipo de interrupção é solicitado.Worker.isCancelled()retornatruequando o trabalho foi explicitamente cancelado (b/79632247).- Foi adicionado suporte a JobParameters#getNetwork() na API de nível 28. Ele é exposto por
Worker.getNetwork(). - Adicionado
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)para que você possa impor quantos jobs podem ser enviados paraJobSchedulerouAlarmManager. Isso ajuda a evitar que oWorkManagerassuma todos os slotsJobSchedulerdisponíveis. - Adição de
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)que ajuda a definir um intervalo de IDs de jobs doJobSchedulerseguros para oWorkManager(b/79996760). Worker.getRunAttemptCount()retorna a contagem de execução atual para um determinadoWorker(b/79716516).WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)permite enfileirarPeriodicWorkRequests exclusivos (b/79600647).WorkManager.cancelAllWork()cancela todos osWorkers. As bibliotecas que dependem deWorkManagerpodem consultar quando esse método foi chamado pela última vez, usandoWorkManager.getLastCancelAllTimeMillis()para limpeza adicional do estado interno.- Adição de
WorkManager.pruneWork()para remover os jobs concluídos do banco de dados interno (b/79950952, b/109710758).
Mudanças de comportamento
- Adicionada uma tag implícita para todos os
WorkRequests, que é o nome da classe totalmente qualificado doWorker. Isso permite removerWorkRequests semtags ou quandoidnão está disponível (b/109572351).
Mudanças importantes
Worker.WorkerResultfoi renomeado comoWorker.Result.Worker.onStoppedagora tem um parâmetro extraisCancelleddefinido comotruequandoWorkertiver sido explicitamente cancelado.
Versão 1.0.0-alpha02
24 de maio de 2018
Correções de bugs
- Correção de um
NullPointerExceptionemState.isFinished()(b/79550068). - Correção de um problema que fazia com que
Workers fossem reprogramados emApplication.onCreate()(b/79660657). - Correção de um problema em que era possível programar mais trabalho do que o permitido pelo SO (b/79497378).
- Mudança da limpeza de wake locks associados a
Workers para a linha de execução em segundo plano. - A implementação
AlarmManageragora é limpa corretamente quando todos os trabalhos pendentes são concluídos. - Corrigidas consultas SQL de limpeza que afetavam localidades que não falam inglês (b/80065360).
- Suporte adicionado para
floats emData(b/79443878). Data.Builder.putAll()agora retorna uma instância deBuilder(b/79699162).- Mais Javadoc e correções na documentação (b/79691663).
Mudanças na API
Workers podem reagir à própria interrupção.Worker.isStopped()pode ser usado para verificar se umWorkerfoi interrompido.Worker.onStopped()pode ser usado para executar operações de limpeza leves.- A API
Worker.getTags()retorna umSetde tags associadas aoWorker. - Adicionadas sobrecargas de
javax.time.Durationpara APIs que usam uma combinação de duração eTimeUnits. Isso é protegido por@RequiresApi(26). - As extensões do
WorkManagerforam movidas do pacoteandroidx.work.ktxpara o pacoteandroidx.work. O uso das extensões antigas foi descontinuado, e elas vão ser removidas em uma versão futura. - O uso de
Configuration.withExecutor()foi descontinuado. UseConfiguration.setExecutor().
Versão 1.0.0-alpha01
8 de maio de 2018
O WorkManager simplifica a programação e a execução de
trabalhos em segundo plano garantidos e com reconhecimento de restrições. Essa versão inicial é 1.0.0-alpha01.