1. Antes de comenzar
Introducción
En esta unidad, aprendiste sobre WorkManager, que es una biblioteca de Jetpack para trabajos en segundo plano diferibles. Se garantiza que este trabajo en segundo plano se ejecutará incluso si cierras su app de origen.
Mientras aprendías sobre WorkManager, también aprendiste cómo definir un trabajo en una clase Worker, cómo crear una WorkRequest para Worker y cómo poner en cola trabajos y programarlos.
En esta práctica guiada, usarás los conceptos que aprendiste y mejorarás la app de Water Me!.
El código de la solución está disponible al final. Para aprovechar al máximo esta experiencia de aprendizaje, intenta implementar y solucionar problemas tanto como puedas antes de ver el código de solución que se brinda. Es durante este período práctico que aprenderás más.
Requisitos previos
- Trabajo en curso de los aspectos básicos de Android con Compose aprendidos en el codelab Pruebas y WorkManager avanzados
Requisitos
- Una computadora con acceso a Internet y Android Studio instalado
Qué compilarás
En esta práctica guiada, usarás los conceptos que aprendiste y mejorarás la app de Water Me!.
Actualmente, la app muestra una lista de plantas en una lista de desplazamiento. Cuando presionas una planta, la app te permite establecer un recordatorio para regarla.
Si bien puedes seleccionar un período, la notificación del recordatorio no se muestra.
Tu tarea es implementar el trabajo en segundo plano para que se muestre la notificación del recordatorio.
Después de que hayas completado el código, la app podrá mostrar una notificación del recordatorio una vez transcurrido el período seleccionado.
2. Obtén el código de inicio
Para comenzar, descarga el código de partida:
Como alternativa, puedes clonar el repositorio de GitHub para el código:
$ 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
Puedes explorar el código de la app de Water Me! en este repositorio de GitHub.
Ejecuta el código de partida
Para familiarizarte con el código de partida, completa los siguientes pasos:
- Abre el proyecto con el código de partida en Android Studio.
- Ejecuta la app en un dispositivo Android o en un emulador.
Ya está todo listo para que comiences a programar.
3. Programa notificaciones con WorkManager
La funcionalidad de la app de Water Me! está implementada casi por completo, a excepción de la capacidad de programar la notificación del recordatorio.
El código para crear una notificación está en el archivo WaterReminderWorker.kt
, que se encuentra en el paquete Worker. La clase WaterReminderWorker
extiende la clase CoroutineWorker
, y el código para realizar la notificación está dentro de su método doWork()
.
Como las notificaciones pueden ser un tema nuevo para ti, este código ya está completo.
override suspend fun doWork(): Result {
val plantName = inputData.getString(nameKey)
makePlantReminderNotification(
applicationContext.resources.getString(R.string.time_to_water, plantName),
applicationContext
)
return Result.success()
}
Tu tarea es crear una OneTimeWorkRequest
que llame a este método con los parámetros correctos de WorkManagerWaterRepository
.
Para obtener ayuda adicional, consulta Trabajo en segundo plano con WorkManager.
Crea solicitudes de trabajo
Para programar la notificación, debes implementar el método scheduleReminder()
en el archivo WorkManagerWaterRepository.kt
.
- Crea una variable llamada
data
conData.Builder
. Los datos deben consistir en un solo valor de cadena, en el queWaterReminderWorker.nameKey
es la clave yplantName
, que se pasa ascheduleReminder()
, es el valor. - Crea una solicitud de trabajo de una sola ejecución con la clase
WaterReminderWorker
. Usaduration
yunit
que se pasan a la funciónscheduleReminder()
, y establece los datos de entrada en la variable de datos que crees. - Llama al método
enqueueUniqueWork()
deworkManager
. Pasa el nombre de la planta concatenado con la duración, usaREPLACE
comoExistingWorkPolicy
y el objeto de solicitud de trabajo.
Ahora, tu app debería funcionar como se espera.
4. Desafío adicional (opcional)
Para practicar la codificación adicional, cambia las opciones de duración por el siguiente tiempo:
- 5 segundos
- 1 minuto
- 2 minutos
- 3 minutos
Cuando termines, prueba cada duración para confirmar que funciona como se espera.
5. Obtén el código de la solución
Para descargar el código del codelab terminado, puedes usar estos 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
También puedes descargar el repositorio como un archivo ZIP, descomprimirlo y abrirlo en Android Studio.
Si deseas ver el código de la solución para este codelab, míralo en GitHub.