1. Avant de commencer
Introduction
Dans ce module, vous avez découvert WorkManager, une bibliothèque Jetpack dédiée aux tâches en arrière-plan différables. L'exécution de ces tâches en arrière-plan est garantie même si vous fermez l'application source.
Vous avez découvert WorkManager, et vous avez appris à définir des tâches dans une classe Worker, à créer un objet WorkRequest pour le Worker, ainsi qu'à mettre en file d'attente et à planifier des tâches.
Dans ces exercices guidés, vous allez exploiter les concepts que vous avez appris et améliorer l'application Water Me!.
Le code de solution est disponible à la fin. Pour profiter pleinement de cette expérience d'apprentissage, essayez de faire tout par vous-même (implémentation et dépannage) avant d'examiner le code de solution fourni. C'est lors de cette session pratique que vous apprendrez le plus.
Conditions préalables
- Vous avez suivi le cours sur les bases d'Android avec Compose dans l'atelier de programmation WorkManager et tests : niveau avancé.
Ce dont vous avez besoin
- Un ordinateur avec un accès à Internet et Android Studio
Objectifs de l'atelier
Dans ces exercices guidés, vous allez exploiter les concepts que vous avez appris et améliorer l'application Water Me!.
L'application affiche actuellement une liste de plantes sous forme de liste déroulante. Lorsque vous appuyez sur une plante, l'appli vous permet de définir un rappel pour penser à l'arroser.
Vous pouvez sélectionner un délai pour le rappel, mais la notification ne s'affiche pas.
Votre tâche consiste à implémenter la tâche en arrière-plan pour que la notification de rappel s'affiche.
Une fois le code finalisé, l'application affichera une notification de rappel lorsque le délai sélectionné sera écoulé.
2. Télécharger le code de démarrage
Pour commencer, téléchargez le code de démarrage :
Vous pouvez également cloner le dépôt GitHub du code :
$ 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
Vous pouvez parcourir le code de l'application Water Me! dans ce dépôt GitHub.
Exécuter le code de démarrage
Pour vous familiariser avec le code de démarrage, procédez comme suit :
- Dans Android Studio, ouvrez le projet contenant le code de démarrage.
- Exécutez l'application sur un appareil Android ou sur un émulateur.
Vous êtes maintenant prêt à commencer le codage.
3. Programmer une notification avec WorkManager
Pour la majeure partie, la fonctionnalité de l'application Water Me! est déjà implémentée. Il ne reste qu'à coder la possibilité de programmer la notification de rappel.
Le code permettant d'envoyer une notification se trouve dans le fichier WaterReminderWorker.kt
, dans le package worker. La classe WaterReminderWorker
étend la classe CoroutineWorker
, et le code permettant d'intégrer la notification se trouve dans sa méthode doWork()
.
Comme vous ne connaissez peut-être pas encore bien le thème des notifications, ce code est déjà finalisé.
override suspend fun doWork(): Result {
val plantName = inputData.getString(nameKey)
makePlantReminderNotification(
applicationContext.resources.getString(R.string.time_to_water, plantName),
applicationContext
)
return Result.success()
}
Votre tâche consiste à créer un objet OneTimeWorkRequest
qui appellera cette méthode avec les paramètres corrects de WorkManagerWaterRepository
.
Pour obtenir de l'aide supplémentaire, consultez la section Travail en arrière-plan avec WorkManager.
Créer des demandes de tâche
Pour programmer la notification, vous devez implémenter la méthode scheduleReminder()
dans le fichier WorkManagerWaterRepository.kt
.
- Créez une variable appelée
data
avecData.Builder
. Les données doivent correspondre à une seule valeur de chaîne, oùWaterReminderWorker.nameKey
est la clé et oùplantName
est transmis àscheduleReminder()
comme valeur. - Créez une demande de travail ponctuelle avec la classe
WaterReminderWorker
. Utilisez les valeursduration
etunit
transmises à la fonctionscheduleReminder()
, puis définissez les données d'entrée sur la variable de données que vous avez créée. - Appelez la méthode
enqueueUniqueWork()
deworkManager
. Transmettez le nom de la plante concaténé avec la durée. UtilisezREPLACE
commeExistingWorkPolicy
et l'objet de la demande de travail.
Votre application devrait maintenant fonctionner comme prévu.
4. Défi supplémentaire (facultatif)
Pour vous exercer davantage au codage, remplacez les options de durée par les valeurs suivantes :
- 5 secondes
- 1 minute
- 2 minutes
- 3 minutes
Une fois que vous avez terminé, testez chaque durée pour vérifier que l'application fonctionne comme prévu.
5. Télécharger le code de solution
Pour télécharger le code de cet atelier de programmation, utilisez les commandes suivantes :
$ 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
Vous pouvez également télécharger le dépôt sous forme de fichier ZIP, le décompresser et l'ouvrir dans Android Studio.
Si vous le souhaitez, vous pouvez consulter le code de solution de cet atelier de programmation sur GitHub.