假设我们有一个IntentService
的实现,然后我们从Activity
开始,然后在队列中添加其他几个Intent
以IntentService
进行处理。所以现在我们首先处理Intent
,其余的Intent
在队列中。现在让我们想象一下,由于可以理解的原因,操作系统会杀死我们的Application
进程。问题是:
-
如何重新启动
IntentService
? -
如何恢复队列?
好吧,我知道总有一个Service
,你可以覆盖它的onStartCommand()
并告诉Service
该怎么做。但我需要一个IntentService
,因为它的模型queue
。
如果工作队列需要持久化,则IntentService
不是您想要使用的。如果您向IntentService
发送许多Intent
,然后该进程被Android杀死,则无法重建队列。 IntentService
只是使用内部Handler
将Intent
排队,并且这些不会在任何地方持久化。他们只是迷路了。
如果我是你,我会自己实现这个。IntentService
的代码不是那么大,您可以查看它并将其用作您自己的Service
模型。您需要将队列写入数据库,以便它是持久的。从onStartCommand()
返回START_STICKY
,以便 Android 在由于资源需求而终止Service
时自动重新启动您的。