Android - 多次运行IntentService

时间:2016-01-13 15:02:51

标签: android android-intent android-intentservice

所以当我一次运行它时,我有一个IntentService运行正常。它需要一个图像处理它然后输出一系列RGB值。

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

有没有正确的方法呢?

2 个答案:

答案 0 :(得分:10)

IntentService 在处理完所有请求后停止服务,因此您永远不必致电stopSelf()

IntentService 无法并行运行任务,所有连续的意图都会进入消息队列并按顺序执行。

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

答案 1 :(得分:4)

您对意向服务的了解:

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

不实现onStartCommand方法,因为如果你这样做,你必须在完成后调用stopSelf()或stopService()。如果您不重写此方法,则Android OS会处理所有内容。

正如@Radu Ionescu所提到的,intentService停止工作,当它完成所有请求后,就会到达onHandleIntent方法。

IntentService通过它创建一个默认的工作线程,并执行到达onHandleIntent方法的所有内容。

只需将所有内容添加到其队列中,或者如果在添加两个不同的操作之前需要花费更长的时间,则可以使用Service来防止IntentService自毁。