上一课向您展示了如何创建一个JobIntentService
类。本课将向您展示如何通过使用Intent
将工作排队来触发JobIntentService
以运行操作。此Intent
可以选择性地包含JobIntentService
要处理的数据。
创建并向 JobIntentService 发送工作请求
要创建工作请求并将其发送到JobIntentService
,请创建一个Intent
并将其排队以通过调用 enqueueWork()
执行。您可以选择性地将数据(以 Intent 附加数据形式)添加到 Intent 中,供 JobIntentService 处理。有关创建 Intent 的更多信息,请阅读Intent 和 Intent 过滤器中的构建 Intent 部分。
以下代码片段演示了此过程
- 为名为
RSSPullService
的JobIntentService
创建一个新的Intent
。
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()
方法中执行定义的工作,然后停止自身。
下一步是将工作请求的结果报告回原始 Activity 或 Fragment。下一课将向您展示如何使用BroadcastReceiver
来实现这一点。