В предыдущем уроке мы рассказали, как создать класс JobIntentService. В этом уроке рассказывается, как запустить JobIntentService для выполнения операции, поставив задачу в очередь с помощью Intent.
Этот объект Intent может содержать данные, которые будут обработаны объектом JobIntentService.
Создание и отправка запроса на работу в JobIntentService
Чтобы создать запрос на выполнение задачи и отправить его в JobIntentService, создайте объект Intent и поставьте его в очередь на выполнение, вызвав метод
enqueueWork().
При необходимости вы можете добавить в намерение данные (в виде дополнительных параметров намерения) для обработки JobIntentService. Подробнее о создании интентов читайте в разделе "Создание интента" статьи Интенты и фильтры интентов.
Ниже приведены фрагменты кода, демонстрирующие этот процесс.
-
Создайте новый объект
IntentдляJobIntentServiceс названием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));
-
Позвонить по номеру
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);
Обратите внимание, что вы можете отправить запрос на работу из любого места в Activity или Fragment. Например, если вам нужно сначала получить данные от пользователя, вы можете отправить запрос из обратного вызова, который реагирует на нажатие кнопки или аналогичный жест.
После вызова
enqueueWork()
JobIntentService выполняет работу, определенную в методе
onHandleWork(), а затем останавливается.
Следующий шаг – сообщить о результатах запроса на работу обратно в исходное действие или фрагмент. В следующем уроке вы узнаете, как это сделать с помощью BroadcastReceiver.