Invia richieste di lavoro al servizio in background

La lezione precedente ti ha mostrato come creare JobIntentService. Questo ti mostra come attivare JobIntentService per eseguire un'operazione accodare il lavoro con un Intent. Questa Intent può facoltativamente contenere i dati relativi JobIntentService per elaborare.

crea e invia una richiesta di lavoro a JobIntentService

Per creare una richiesta di lavoro e inviarla a un JobIntentService, crea una Intent e accodala a da eseguire richiamando enqueueWork(). Se vuoi, puoi aggiungere dati all'intent (sotto forma di intent extra) per l'intent JobIntentService da elaborare. Per ulteriori informazioni sulla creazione di intent, leggi la sezione sezione per intent in Filtri per intent e intent

I seguenti snippet di codice mostrano questa procedura:

  1. Crea una nuova Intent per JobIntentService ha chiamato 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. Chiama 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);
    

Tieni presente che puoi inviare la richiesta di lavoro da qualsiasi punto di un'attività o di un frammento. Ad esempio, se devi prima ottenere un input utente, puoi inviare la richiesta da un callback che risponde al clic su un pulsante o a un gesto simile.

Dopo aver chiamato enqueueWork(), JobIntentService svolge il lavoro definito onHandleWork() e si interrompe.

Il passaggio successivo consiste nel segnalare i risultati della richiesta di lavoro all'attività di origine o Frammento. La prossima lezione ti mostrerà come fare questo con un BroadcastReceiver.