Sobes.tech
Middle

Quels types de WorkRequest connaissez-vous et quels critères peut-on leur appliquer?

sobes.tech IA

Réponse de l'IA

Types de WorkRequest:

  • OneTimeWorkRequest : S'exécute une seule fois lorsque ses contraintes sont remplies.
  • PeriodicWorkRequest : S'exécute plusieurs fois à intervalles réguliers.

Critères (Constraints) pouvant être appliqués à WorkRequest :

  • setRequiredNetworkType(NetworkType networkType) : Type de réseau requis (CONNECTED, UNMETERED, NOT_ROAMING, METERED, NOT_REQUIRED).
  • setRequiresCharging(boolean requiresCharging) : Si la charge de l'appareil est requise.
  • setRequiresDeviceIdle(boolean requiresDeviceIdle) : Si l'appareil doit être inactif.
  • setRequiresBatteryNotLow(boolean requiresBatteryNotLow) : Si le niveau de batterie ne doit pas être faible.
  • setRequiresStorageNotLow(boolean requiresStorageNotLow) : Si l'espace de stockage ne doit pas être plein.
  • addContentUriTrigger(Uri uri, boolean triggerContentMaxDelay) : Déclencheur lors du changement de contenu à l'Uri spécifié.
  • setTriggerContentUpdateDelay(long duration, TimeUnit unit) : Délai avant le démarrage après le changement de contenu (pour OneTimeWorkRequest).
  • setTriggerContentMaxDelay(long duration, TimeUnit unit) : Délai maximum avant le démarrage après le changement de contenu (pour PeriodicWorkRequest).

Exemple de création de OneTimeWorkRequest avec contraintes :

// Créer des contraintes
val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .setRequiresCharging(true)
    .build()

// Créer un OneTimeWorkRequest avec contraintes
val workRequest = OneTimeWorkRequestBuilder<MyWorker>()
    .setConstraints(constraints)
    .build()

Exemple de création de PeriodicWorkRequest avec contraintes :

// Créer des contraintes
val constraints = Constraints.Builder()
    .setRequiresDeviceIdle(true)
    .build()

// Créer un PeriodicWorkRequest avec contraintes
val periodicWorkRequest = PeriodicWorkRequestBuilder<MyWorker>(15, TimeUnit.MINUTES)
    .setConstraints(constraints)
    .build()