Cómo enviar solicitudes de trabajo al servicio en segundo plano

En la lección anterior, se mostraba cómo crear una clase JobIntentService. En esta lección, se muestra cómo activar el JobIntentService para ejecutar una operación colocando el trabajo en cola con un Intent. De manera opcional, este Intent puede contener datos para que JobIntentService procese.

Cómo crear una solicitud de trabajo y enviarla a un elemento JobIntentService

Para crear una solicitud de trabajo y enviarla a un JobIntentService, crea un Intent y ponlo en cola para que se ejecute llamando a enqueueWork(). De manera opcional, puedes agregar datos al intent (en forma de extras de intents) para que los procese JobIntentService. Para obtener más información sobre la creación de intents, consulta la sección Cómo crear un intent en Intents y filtros de intents.

En los siguientes fragmentos de código, se demuestra este proceso:

  1. Crea un Intent nuevo para el JobIntentService llamado 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. Llama a 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);
    

Ten en cuenta que puedes enviar la solicitud de trabajo desde cualquier lugar de un objeto Activity o Fragment. Por ejemplo, si primero necesitas obtener la entrada del usuario, puedes enviar la solicitud desde una devolución de llamada que responda a un clic en un botón o a un gesto similar.

Una vez que llamas a enqueueWork(), JobIntentService hace el trabajo definido en su método onHandleWork() y, luego, se detiene solo.

El siguiente paso es informar los resultados de la solicitud de trabajo a la actividad o al fragmento de origen. En la siguiente lección, se muestra cómo hacerlo con un BroadcastReceiver.