每次触发服务时是否创建Service的新实例,还是重新使用实例?例如。多次致电:

context.startService(new Intent(context, MyService.class));




The docs暗示可以重用服务类:


  如果有人调用Context.startService(),则系统将检索服务(创建该服务并在需要时调用其onCreate()方法)


但是,我无法在任何地方直接解决此问题。

最佳答案

通过startService()启动服务后,它将被视为正在运行。它将保持该状态,直到:


stopService()
服务呼叫stopSelf()
该过程将终止(例如,在设置中强制停止)


在运行时,对同一服务类的startService()后续调用将进入同一实例。

请记住,您使用的Service子类可能会调用stopSelf()。例如,如果IntentService调用stopSelf()后,对于该服务没有更多的工作要做(即,没有其他人调用onHandleIntent()在此期间发送新命令),则调用startService()

10-04 22:59