Enviar solicitações de trabalho para o serviço em segundo plano

A lição anterior mostrou como criar um classe JobIntentService. Isso desta lição mostra como acionar JobIntentService para executar uma operação enfileirando o trabalho com um Intent. Esse Intent pode podem conter dados para o JobIntentService para 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 a enfileire para ser executado chamando enqueueWork() Opcionalmente, você pode adicionar dados à intent (na forma de extras da intent) para o JobIntentService a ser processado. Para mais informações sobre como criar intents, leia o módulo seção de intent em Intents e filtros de intent

Os snippets de código a seguir demonstram esse processo:

  1. Crie um novo Intent para o JobIntentService chamado 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. Chamar 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);
    

Você pode enviar a solicitação de trabalho de qualquer lugar em uma atividade ou fragmento. Por exemplo, se você precisar receber a entrada do usuário primeiro, poderá enviar a solicitação de um callback que responde a um clique em um botão ou a um gesto semelhante.

Depois de chamar enqueueWork(), JobIntentService faz o trabalho definido no onHandleWork() e, em seguida, para sozinho.

A próxima etapa é relatar os resultados da solicitação de trabalho de volta à atividade de origem ou fragmento. A próxima lição mostra como fazer isso com uma BroadcastReceiver: