Contraintes et planification
Exécutez le travail dans les conditions appropriées.
Contraintes et planification est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.
Contraintes et planification
Un travailleur définit ce qu’il faut faire. Un WorkRequest définit quand et dans quelles conditions le travail s’exécute. Vous créez une requête, lui associez des contraintes, puis vous la mettez en file d’attente.
Que sont les contraintes ?
Les contraintes sont des conditions qui doivent être remplies avant l’exécution de votre travail, comme disposer d’une connexion réseau ou être en charge. WorkManager attend qu’elles soient satisfaites.
Créer des contraintes
Utilisez Constraints.Builder pour déclarer vos exigences.
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresCharging(true)
.build()Types de contraintes courants
Les contraintes fréquemment utilisées comprennent :
setRequiredNetworkType(CONNECTED, UNMETERED, etc.)setRequiresChargingsetRequiresBatteryNotLowsetRequiresDeviceIdlesetRequiresStorageNotLow
Créer un OneTimeWorkRequest
Pour un travail exécuté une seule fois, utilisez OneTimeWorkRequestBuilder, paramétré avec la classe de votre travailleur, puis associez-lui les contraintes.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setConstraints(constraints)
.build()Transmettre des données d’entrée
Associez les données d’entrée à la requête avec setInputData ; le travailleur les lit via inputData.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setInputData(workDataOf("user_id" to "42"))
.setConstraints(constraints)
.build()Mettre le travail en file d’attente
Obtenez l’instance de WorkManager et appelez enqueue. WorkManager conserve la requête et l’exécute lorsque les contraintes sont respectées.
WorkManager.getInstance(context).enqueue(request)Stratégie de temporisation
Lorsqu’un travailleur renvoie retry(), WorkManager attend avant d’effectuer une nouvelle tentative. Configurez la stratégie avec setBackoffCriteria, en choisissant une temporisation linéaire ou exponentielle.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setBackoffCriteria(
BackoffPolicy.EXPONENTIAL,
10, TimeUnit.SECONDS
)
.build()Travail unique
Pour éviter de planifier des tâches en double, utilisez enqueueUniqueWork avec un nom et une stratégie de conflit (KEEP, REPLACE ou APPEND).
WorkManager.getInstance(context).enqueueUniqueWork(
"sync_job",
ExistingWorkPolicy.KEEP,
request
)Observer l’état du travail
Vous pouvez observer l’état d’une requête (ENQUEUED, RUNNING, SUCCEEDED, FAILED) via getWorkInfoByIdFlow ou LiveData, ce qui est utile pour afficher la progression dans l’interface.
WorkManager.getInstance(context)
.getWorkInfoByIdFlow(request.id)
.collect { info -> /* react to info.state */ }Ajouter des balises
Associez des balises aux requêtes avec addTag afin de pouvoir ensuite rechercher ou annuler des groupes de travaux associés par balise, par exemple en annulant tous les travaux d’« upload » en une seule fois.
Vérification rapide
Testez votre compréhension des contraintes et de la planification.
Récapitulatif
Vous avez planifié un travail soumis à des contraintes :
Constraints.Builderdéfinit des conditions comme le réseau et la mise en chargeOneTimeWorkRequestBuilderconstruit la requêteenqueue/enqueueUniqueWorkla soumet- Configurez la temporisation, observez l’état et associez des balises au travail
Ensuite : travail périodique et travail enchaîné.
Questions Fréquemment Posées
La leçon « Contraintes et planification » est-elle gratuite ?
Oui — le texte complet de « Contraintes et planification » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Contraintes et planification » ?
Exécutez le travail dans les conditions appropriées. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Contraintes et planification » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Quand utiliser WorkManager
- Créer un Worker
- Contraintes et planification
- Travail périodique et enchaîné