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

问题描述 投票:2回答:1

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

android service
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.