我处理服务,返回代码: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()
的调用),也可能发生这种情况。