Envoyer des requêtes de travail au service d'arrière-plan

La leçon précédente vous a montré comment créer une classe JobIntentService. Cette leçon vous explique comment déclencher JobIntentService pour exécuter une opération en mettant la tâche en file d'attente avec un Intent. Ce Intent peut éventuellement contenir des données que le JobIntentService doit traiter.

Créer et envoyer une requête de travail à un JobIntentService

Pour créer une requête de travail et l'envoyer à un JobIntentService, créez un Intent et mettez-le en file d'attente en vue de son exécution en appelant enqueueWork(). Vous pouvez éventuellement ajouter des données à l'intent (sous la forme d'extras d'intent) que JobIntentService doit traiter. Pour en savoir plus sur la création d'intents, consultez la section "Créer un intent" dans Intents et filtres d'intents.

Les extraits de code suivants illustrent ce processus:

  1. Créez un Intent pour le JobIntentService appelé RSSPullService.

    Kotlin

    /*
     * Creates a new Intent to start the RSSPullService
     * JobIntentService. Passes a URI in the
     * Intent's "data" field.
     */
    serviceIntent = Intent().apply {
        putExtra("download_url", dataUrl)
    }
    

    Java

    /*
     * Creates a new Intent to start the RSSPullService
     * JobIntentService. Passes a URI in the
     * Intent's "data" field.
     */
    serviceIntent = new Intent();
    serviceIntent.putExtra("download_url", dataUrl));
    
  2. Appeler enqueueWork()

    Kotlin

    private const val RSS_JOB_ID = 1000
    RSSPullService.enqueueWork(context, RSSPullService::class.java, RSS_JOB_ID, serviceIntent)
    

    Java

    // Starts the JobIntentService
    private static final int RSS_JOB_ID = 1000;
    RSSPullService.enqueueWork(getContext(), RSSPullService.class, RSS_JOB_ID, serviceIntent);
    

Notez que vous pouvez envoyer la requête de travail depuis n'importe quel emplacement dans une activité ou un fragment. Par exemple, si vous devez d'abord obtenir des entrées utilisateur, vous pouvez envoyer la requête à partir d'un rappel qui répond à un clic sur un bouton ou à un geste similaire.

Une fois que vous avez appelé enqueueWork(), JobIntentService effectue la tâche définie dans sa méthode onHandleWork(), puis s'arrête automatiquement.

L'étape suivante consiste à signaler les résultats de la requête de travail à l'activité ou au fragment d'origine. La leçon suivante vous explique comment procéder avec un BroadcastReceiver.