En la lección anterior, se mostraba cómo crear una clase JobIntentService
. En esta lección, se muestra cómo activar el elemento 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
A fin de crear una solicitud de trabajo y enviarla a un elemento JobIntentService
, crea un Intent
y colócalo en la cola para que se ejecute mediante un llamado a enqueueWork()
.
Opcionalmente, puedes agregar datos al intent (en forma de elementos adicionales de intents) con el objetivo de que JobIntentService los procese. 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:
-
Crea un
Intent
nuevo paraJobIntentService
que se llameRSSPullService
.
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));
-
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 necesitas obtener la entrada del usuario primero, puedes enviar la solicitud desde una devolución de llamada que responda a un clic de botón o 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 al objeto Activity o Fragment de origen. En la siguiente lección, se muestra cómo hacerlo con un BroadcastReceiver
.