我处理服务和返回码: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()的组件可能会发生。

07-24 09:47
查看更多