我处理服务和返回码:START_NOT_STICKY。我不想重新启动服务。
但是文档说:“除非有待交付的意图,否则不要重新创建服务。”
您能否举例说明这些导致重启服务的未决意图?
最佳答案
当您返回START_NOT_STICKY
时,这意味着:
如果Android终止了托管您的Service
的进程(如果需要资源或认为您的Service
没有做任何有用的事情,它可以随时执行此操作),则会发生以下情况:
如果您的进程在调用onStartCommand()
之后但在onStartCommand()
完成之前被终止,则Android将重新启动您的Service
并再次调用onStartCommand()
,重新提供在终止该进程时正在处理的Intent
如果您的进程在onStartCommand()
完成后被终止,则只有在Service
挂起的Intent
时,Android才会重新启动您的Service
。在这种情况下,如果您的Intent
的任何名为startService()
的组件都存在挂起的Service
,并且您的Service
尚未完全处理该调用。例如,如果startService()
死了的时候,一个名为Service
的组件就是这种情况。或者,如果您的startService()
仍在Service
方法中(称为对onStartCommand()
的先前调用),而名为startService()
的组件可能会发生。