我使用服务在后台处理ContentResolver
的意图。
每个新的意图调用都会启动服务,并且一旦处理结束,服务就会自行停止。
这会产生一个问题,其中新的意图会启动服务运行,但先前的服务运行仍在处理中,从而导致新运行在处理结束之前就被杀死。
我考虑过要在服务中添加某种静态的'nunInstances'并仅停止其中的1个。
另一个选择是保持服务运行。我曾尝试寻找有关其有效性和副作用的信息,但结果是空的。
答案 0 :(得分:1)
您可以使用IntentService
作为工作队列。您可以发送与startService()
相关的工作,次数不限。这项工作是一个接一个地连续进行的。完成上一个工作单元后,Service
会自行停止。
或者您使用常规的Service
并将工作自己排在onStartCommand()
中。当您没有其他工作要做时,请致电stopSelf()
。
注意::Android不会创建多个Service
实例。您不必担心正在运行Service
的多个实例。如果调用startService()
的东西已经运行了Service
,则Android 不会创建Service
的新实例。它只是在运行的实例上调用onStartCommand()
,并将Intent
作为参数传递。