Android - 运行 IntentService 多次

5

我有一个 IntentService,当我单次运行它时它能正常工作。它会处理一张图片并输出一系列的 RGB 值。

但是现在我需要它多次运行以批量处理一系列的图片。我的第一次尝试是在我的主类中调用 StopService 然后创建并运行一个新的 IntentService 实例。但是当我调用 StopService 时它崩溃了。

是否有正确的方法来实现这个需求呢?

2个回答

13

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

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

因此,只需逐个添加它们,并确保清除字段以确保所有意图都独立处理,因为IntentService对象/线程不会被重新创建。


4

关于IntentService的知识:

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

不要实现onStartCommand方法,因为如果你这样做,当完成时,你必须调用stopSelf()或stopService()。如果你不覆盖此方法,则Android OS会处理所有内容。

正如@Radu Ionescu所提到的,IntentService在完成其onHandleIntent方法接收到的所有请求后停止工作。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接