O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Trabalho exclusivo

Trabalho exclusivo é um conceito eficiente que garante que você tenha apenas uma cadeia de trabalho com um nome específico por vez. Diferentemente dos ids, os nomes exclusivos são legíveis por humanos e especificados pelo desenvolvedor, em vez de serem gerados automaticamente pelo WorkManager. Também diferentemente das tags, os nomes exclusivos são associados apenas a uma cadeia de trabalho.

Você pode criar uma sequência de trabalho única chamando WorkManager.enqueueUniqueWork(String, ExistingWorkPolicy, OneTimeWorkRequest) ou WorkManager.enqueueUniquePeriodicWork(String, ExistingPeriodicWorkPolicy, PeriodicWorkRequest). O primeiro argumento é o nome exclusivo, que é a chave que usamos para identificar os WorkRequests. O segundo argumento é a política de resolução de conflitos, que especifica o que o WorkManager precisa fazer se já existir uma cadeia de trabalho incompleta com esse nome exclusivo:

  • Cancelar a cadeia existente e substituir pela nova usando REPLACE.
  • Usar KEEP para manter a sequência existente e ignorar a nova solicitação.
  • Usar APPEND para anexar a nova sequência e executar a primeira tarefa da nova sequência após a conclusão da última tarefa da sequência existente. Não é possível usar APPEND com PeriodicWorkRequests.

O trabalho exclusivo pode ser útil caso você tenha uma tarefa que não deva ser colocada em fila várias vezes. Por exemplo, se seu app precisar sincronizar dados com a rede, você poderá colocar uma sequência chamada "sync" na fila e especificar que a nova tarefa precisará ser ignorada se existir uma sequência com esse nome. Sequências de trabalho únicas também podem ser úteis caso você precise aumentar gradualmente uma cadeia longa de tarefas. Por exemplo, um app de edição de fotos pode permitir que os usuários desfaçam uma cadeia longa de ações. Cada uma dessas operações de desfazer uma ação pode demorar um pouco, mas elas precisam ser realizadas na ordem correta. Nesse caso, o app pode criar uma cadeia de "desfazer" e anexar cada operação de desfazer à cadeia, conforme necessário.

Por fim, se você precisar criar uma cadeia de trabalho exclusivo, poderá usar WorkManager.beginUniqueWork(String, ExistingWorkPolicy, OneTimeWorkRequest), em vez de beginWith().