context.startForegroundService(startServiceIntent)会多次调用onCreate吗?

时间:2019-03-11 12:14:37

标签: android service

如果我多次调用context.startForegroundService(startServiceIntent),我会多次调用具有新服务意图的onCreate()还是第一次调用onCreate以获取新服务意图,然后调用onStartCommand()/ onHandleIntent ()多次?

1 个答案:

答案 0 :(得分:3)

这取决于服务是否正在运行。如果该服务尚未运行,startForegroundService()将触发对onCreate()的呼叫。

例如,

  • 您致电startForegroundService()
  • Android创建服务实例并在其上调用onCreate()
  • 然后,Android在其上调用onStartCommand()(这可能会触发对其他事物的调用,例如onHandleIntent()中的IntentService
  • 您再次致电startForegroundService()
  • Android意识到您拥有该服务的运行副本,并且没有创建新副本,因此没有onCreate()调用
  • 然后,Android在其上调用onStartCommand()(这可能会触发对其他事物的调用,例如onHandleIntent()中的IntentService
  • 您可以通过stopService()stopSelf()(或onHandleIntent()返回,如果您仍在使用IntentService)停止服务
  • 您再次致电startForegroundService(),因为您非常喜欢该方法
  • Android创建服务实例并在其上调用onCreate()
  • 然后,Android在其上调用onStartCommand()(这可能会触发对其他事物的调用,例如onHandleIntent()中的IntentService