如果某个服务使用不同的Intent对startService()
进行了多次调用,那么当应用程序因内存不足而被杀死后重启时,它如何与START_REDELIVER_INTENT
一起使用?
示例:我使用不同的startService(intent, class)
三次致电Intents
。在服务停止之前,由于内存使用,操作系统会终止应用程序或服务。之后,服务返回。根据{{1}} START_REDELIVER_INTENT
应该使用启动它的原始Intent调用。这三个人都会被召唤吗?只有第一个?只有最后一个?
我考虑过对它进行测试,但我想知道所谓的会发生什么,而不仅仅是我的具体设备所做的事情。谢谢!
答案 0 :(得分:2)
这三个人都会被召唤吗?只有第一个?只有最后一个 一个?
只有最后一个。
documentation对此很清楚:
...如果此服务的进程在启动时被终止(从<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
</ul>
返回后),那么它将被安排重新启动并且最后一次传递的Intent重新传递到
它再次通过onStartCommand()
。
答案 1 :(得分:2)
采纳的答案不正确。
他没有看到接下来的几个字:
此Intent将保持计划重新发送,直到服务调用{@link #stopSelf(int)}并将起始ID提供给{@link #onStartCommand}
这意味着当一个意图出现并onStartCommand
被调用时,如果我们没有停止与onStartCommand
的startId相关联的意图,系统会将此意图视为not-handled
,因此,当服务重新创建时,这些not-handled
意图将重新发送到onStartCommand
。
所以,它将被调用三次。