"Do not recreate the service, unless there are pending intents to deliver."是什么意思?



我处理服务,返回代码:START_NOT_STICKY。我不想重新启动服务。

但文档中写道:"不要重新创建服务,除非有交付的未决意图。"你能给我举一个导致重新启动服务的未决意图的例子吗?

当您返回START_NOT_STICKY时,这意味着:

如果Android杀死了托管Service的进程(如果它需要资源或认为Service没有做任何有用的事情,它几乎可以随时这样做),就会发生以下情况:

  • 如果您的进程在调用onStartCommand()之后被终止,但在onStartCommand()完成之前被终止,Android将重新启动您的Service并再次调用onStartCommand(),重新交付进程终止时正在处理的Intent

  • 如果您的进程在onStartCommand()完成后被终止,则只有在您的Service有挂起的Intent时,Android才会重新启动Service。在这种情况下,如果您的Service的任何名为startService()的组件,并且该调用尚未由Service完全处理,则会存在挂起的Intent。例如,如果一个名为startService()的组件在您的Service失效时,可能会出现这种情况。或者,如果一个名为startService()的组件,而您的Service仍在onStartCommand()方法中(处理以前对startService()的调用),也可能发生这种情况。

最新更新