Exercício: app Water Me!

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

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.

fb69d6519999f217.png d6b68d1e9f1026c5.png

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.

a8f9bceed83af5a9.png

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:

  1. Abra o projeto com o código inicial no Android Studio.
  2. 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.

  1. Crie uma variável com o nome data com o Data.Builder. Os dados precisam consistir em um único valor de string em que WaterReminderWorker.nameKey é a chave e o valor é o plantName transmitido para scheduleReminder().
  2. Crie uma solicitação de trabalho única com a classe WaterReminderWorker. Use a duration e a unit transmitidas para a função scheduleReminder() e defina os dados de entrada para a variável de dados criada.
  3. Chame o método enqueueUniqueWork() do workManager. Transmita o nome da planta concatenado com a duração, use REPLACE como a ExistingWorkPolicy 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).