A lição anterior mostrou como criar uma
classe JobIntentService
. Esta lição mostra como acionar o JobIntentService
para executar uma operação enfileirando o trabalho com um Intent
.
Essa Intent
pode
conter dados para o
JobIntentService
processar.
Criar e enviar uma solicitação de trabalho para um JobIntentService
Para criar uma solicitação de trabalho e enviá-la para um JobIntentService
, crie uma Intent
e coloque-a na fila para ser executada chamando
enqueueWork()
.
Opcionalmente, adicione dados à intent (na forma de extras) para o
JobIntentService processar. Para saber mais sobre como criar intents, leia a seção Como criar uma intent em Intents e filtros de intent.
Os snippets de código a seguir demonstram esse processo:
-
Crie um novo
Intent
para oJobIntentService
chamadoRSSPullService
.
/*
* 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)
}/*
* 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)); -
Chamar
enqueueWork()
private const val RSS_JOB_ID = 1000
RSSPullService.enqueueWork(context, RSSPullService::class.java, RSS_JOB_ID, serviceIntent)// Starts the JobIntentService
private static final int RSS_JOB_ID = 1000;
RSSPullService.enqueueWork(getContext(), RSSPullService.class, RSS_JOB_ID, serviceIntent);
Você pode enviar a solicitação de trabalho de qualquer lugar em uma atividade ou fragmento. Por exemplo, se você precisa receber a entrada do usuário primeiro, pode enviar a solicitação a partir de um callback que responda a um clique de botão ou a um gesto semelhante.
Depois de chamar
enqueueWork()
,
o
JobIntentService
faz o trabalho definido no método
onHandleWork()
e, em seguida, para.
A próxima etapa é informar os resultados da solicitação de trabalho de volta à atividade
ou ao fragmento de origem. A próxima lição mostra como fazer isso com um BroadcastReceiver
.