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

Dans la leçon précédente, vous avez appris à créer JobIntentService. Ce vous explique comment déclencher JobIntentService pour exécuter une opération mettre une tâche en file d'attente avec un Intent. Ce/Cet/Cette Intent peut et éventuellement des données pour JobIntentService à traiter.

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

Pour créer une demande de travail et l'envoyer à un JobIntentService, créer un Intent et le placer en file d'attente être exécuté en appelant enqueueWork() Vous pouvez éventuellement ajouter des données à l'intent (sous la forme d'extras d'intent) pour la JobIntentService à traiter. Pour en savoir plus sur la création d'intents, consultez la section Section "intent" dans Intents et filtres d'intents

Les extraits de code suivants illustrent ce processus:

  1. Créez un Intent pour le <ph type="x-smartling-placeholder"></ph> 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 <ph type="x-smartling-placeholder"></ph> 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 une 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(), le JobIntentService effectue le travail défini dans son onHandleWork(), puis s'arrête.

L'étape suivante consiste à transmettre les résultats de la demande de tâche à l'activité d'origine ou Fragment. La leçon suivante vous explique comment procéder BroadcastReceiver