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-继承BaseAdapter--自己定义适配器,getView运行多次的解决方法