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 en file d'attente une tâche avec 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) pour que JobIntentService les traite. 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 n'importe où dans une activité ou un fragment. Par exemple, si vous devez d'abord obtenir l'entrée 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 le travail défini dans sa méthode onHandleWork(), puis s'arrête.

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.