每次触发服务时是否创建Service
的新实例,还是重新使用实例?例如。多次致电:
context.startService(new Intent(context, MyService.class));
The docs暗示可以重用服务类:
如果有人调用
Context.startService()
,则系统将检索服务(创建该服务并在需要时调用其onCreate()
方法)但是,我无法在任何地方直接解决此问题。
最佳答案
通过startService()
启动服务后,它将被视为正在运行。它将保持该状态,直到:
叫stopService()
服务呼叫stopSelf()
该过程将终止(例如,在设置中强制停止)
在运行时,对同一服务类的startService()
后续调用将进入同一实例。
请记住,您使用的Service
子类可能会调用stopSelf()
。例如,如果IntentService
调用stopSelf()
后,对于该服务没有更多的工作要做(即,没有其他人调用onHandleIntent()
在此期间发送新命令),则调用startService()
。