1. Antes de começar
Introdução
Nesta unidade, você aprendeu sobre o WorkManager, que é uma biblioteca do Jetpack para trabalhos em segundo plano adiáveis. Os trabalhos em segundo plano vão ser executados mesmo se você fechar o app de origem.
Ao aprender sobre o WorkManager, você aprendeu a definir o trabalho em uma classe de worker, como criar uma WorkRequest para workers e como enfileirar e agendar trabalhos.
Nesta série de exercícios, você vai usar os conceitos que aprendeu e melhorar o app Water Me!.
O código da solução está disponível no final. Para aproveitar melhor esta experiência de aprendizado, tente fazer implementações e resolver problemas o máximo possível antes de analisar o código da solução fornecido. É durante a prática que você mais aprende.
Pré-requisitos
- Curso de noções básicas do Android com o Compose no codelab WorkManager avançado e testes.
O que é necessário
- Um computador com acesso à Internet e o Android Studio.
O que você vai criar
Nesta série de exercícios, você vai usar os conceitos que aprendeu e melhorar o app Water Me!.
No momento, o app mostra uma lista de plantas em uma lista de rolagem. Quando você toca em uma delas, o app permite definir um lembrete para regar a planta.
Embora seja possível selecionar um período de lembrete, a notificação de lembrete não é mostrada.
Sua tarefa é implementar o trabalho em segundo plano para que a notificação de lembrete apareça.
Depois que você concluir o código, o app poderá mostrar uma notificação de lembrete após o término de um determinado período.
2. Acessar o código inicial
Para começar, faça o download do código inicial:
Outra opção é clonar o repositório do GitHub:
$ git clone https://github.com/google-developer-training/basic-android-kotlin-compose-training-waterme.git $ cd basic-android-kotlin-compose-training-waterme $ git checkout starter
Procure o código do app Water Me! neste repositório do GitHub (em inglês).
Executar o código inicial
Para se familiarizar com o código inicial, siga estas etapas:
- Abra o projeto com o código inicial no Android Studio.
- Execute o app em um dispositivo Android ou emulador.
Você já pode começar a programar.
3. Agendar uma notificação usando o WorkManager
A maior parte da funcionalidade do app Water Me! foi implementada, exceto pela capacidade de programar a notificação de lembrete.
O código para fazer uma notificação está no arquivo WaterReminderWorker.kt
, que está no pacote worker. A classe WaterReminderWorker
estende a classe CoroutineWorker
, e o código para fazer a notificação está dentro do método doWork()
.
Como as notificações podem ser um tema novo, o código já está pronto para ser usado.
override suspend fun doWork(): Result {
val plantName = inputData.getString(nameKey)
makePlantReminderNotification(
applicationContext.resources.getString(R.string.time_to_water, plantName),
applicationContext
)
return Result.success()
}
Sua tarefa é criar uma OneTimeWorkRequest
que chame esse método com os parâmetros corretos do WorkManagerWaterRepository
.
Para receber mais ajuda, consulte Trabalho em segundo plano com o WorkManager.
Criar solicitações de trabalho
Para programar a notificação, implemente o método scheduleReminder()
no arquivo WorkManagerWaterRepository.kt
.
- Crie uma variável com o nome
data
com oData.Builder
. Os dados precisam consistir em um único valor de string em queWaterReminderWorker.nameKey
é a chave e o valor é oplantName
transmitido parascheduleReminder()
. - Crie uma solicitação de trabalho única com a classe
WaterReminderWorker
. Use aduration
e aunit
transmitidas para a funçãoscheduleReminder()
e defina os dados de entrada para a variável de dados criada. - Chame o método
enqueueUniqueWork()
doworkManager
. Transmita o nome da planta concatenado com a duração, useREPLACE
como aExistingWorkPolicy
e o objeto da solicitação de trabalho.
Agora, o app funcionará conforme o esperado.
4. Desafio extra (opcional)
Para praticar mais programação, mude as opções de duração de tempo para:
- 5 segundos
- 1 minuto
- 2 minutos
- 3 minutos
Depois de terminar, teste cada duração para confirmar se tudo funciona como esperado.
5. Acessar o código da solução
Para fazer o download do código do codelab concluído, use estes comandos:
$ git clone https://github.com/google-developer-training/basic-android-kotlin-compose-training-waterme.git $ cd basic-android-kotlin-compose-training-waterme $ git checkout main
Se preferir, você pode fazer o download do repositório como um arquivo ZIP, descompactar e abrir no Android Studio.
Confira o código da solução deste codelab no GitHub (link em inglês).