Android - 多次运行 IntentService

Posted

技术标签:

【中文标题】Android - 多次运行 IntentService【英文标题】:Android - Running a IntentService multiple times 【发布时间】:2016-04-18 14:56:38 【问题描述】:

所以我有一个 IntentService 在我运行一次时运行良好。它需要对图像进行操作,然后输出一系列 RGB 值。

但我现在需要它做的是多次运行以批处理出一系列图像。我的第一次尝试涉及在我的主类中调用停止服务,然后创建并运行 IntentService 的新实例。但是当我调用 StopService 时,它​​崩溃了。

有正确的方法吗?

【问题讨论】:

【参考方案1】:

IntentService 在处理完所有请求后停止服务,因此您无需调用stopSelf()

IntentService不能并行运行任务,所有连续的intent都会进入消息队列,依次执行。

因此,只需一个接一个地添加它们,并确保清理您的字段以确保独立处理所有 Intent,因为不会重新创建 IntentService 对象/线程。

【讨论】:

【参考方案2】:

关于意图服务你必须知道的:

“IntentService 类为在单个后台线程上运行操作提供了一个简单的结构。这允许它处理长时间运行的操作而不会影响用户界面的响应能力。”

不要实现 onStartCommand 方法,因为如果你这样做了,你必须在完成后调用 stopSelf() 或 stopService()。如果您不覆盖此方法,那么 android 操作系统会处理所有事情。

正如@Radu Ionescu 所说,intentService 停止工作,当所有请求都到达它的 onHandleIntent 方法时。

IntentService 开启时会创建一个默认工作线程,并执行到达 onHandleIntent 方法的所有内容。

只需将所有内容添加到它的队列中,或者如果您需要更长的时间才能添加两个不同的操作,您可以使用 Service,以防止 IntentService 自毁。

【讨论】:

以上是关于Android - 多次运行 IntentService的主要内容,如果未能解决你的问题,请参考以下文章

请求后台任务在 Android 中多次运行

android-继承BaseAdapter--自己定义适配器,getView运行多次的解决方法

Android16.4 IntentService类

另一个活动的Android意图被多次执行

Android自学之路——Service与IntentService

Android从睡眠状态返回后,周期性的timertask一次执行多次