2016-01-13 35 views
1

所以我有一个IntentService,运行良好,当我运行一次。它需要一个图像来处理它,然后输出一系列的RGB值。Android - 多次运行一个IntentService

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

有没有正确的方法来做到这一点?

+0

显示你做了什么。 –

回答

7

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

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

因此,只需将它们依次添加并确保清理您的字段,以确保所有意图都是独立处理的,因为不会重新创建IntentService对象/线程。

1

你必须了解的意图服务什么:

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

不执行onStartCommand方法,因为万一你做了,你必须在完成时调用stopSelf()或stopService()。如果你不覆盖这个方法,那么Android OS会处理所有事情。

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

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

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