Android 如果操作系统已终止IntentService,该怎么办?
假设我们有一个Android 如果操作系统已终止IntentService,该怎么办?,android,intentservice,Android,Intentservice,假设我们有一个IntentService的实现,然后我们从Activity开始,然后在队列中添加几个其他Intent以进行处理。现在我们有第一个Intent正在处理中,剩下的Intent在队列中。现在,让我们想象一下,操作系统出于可以理解的原因杀死了我们的应用程序进程。问题是: 如何重新启动IntentService 如何恢复队列 嗯,我知道总有一个服务可以覆盖它的onStartCommand()并告诉服务该做什么。但是我需要一个IntentService,因为它的队列模型。IntentServ
IntentService
的实现,然后我们从Activity
开始,然后在队列中添加几个其他Intent
以进行处理。现在我们有第一个Intent
正在处理中,剩下的Intent
在队列中。现在,让我们想象一下,操作系统出于可以理解的原因杀死了我们的应用程序进程。问题是:
如何重新启动IntentService
如何恢复队列
嗯,我知道总有一个服务
可以覆盖它的onStartCommand()
并告诉服务
该做什么。但是我需要一个IntentService
,因为它的队列
模型。IntentService
不是您想要使用的,如果工作队列需要持久化。如果将许多Intent
s发送到IntentService
,然后进程被Android终止,则无法重建队列IntentService
只是使用内部处理程序将Intent
排队,而这些不会在任何地方持久化。他们只是迷路了
如果我是你,我会亲自实施。IntentService
的代码没有那么大,您可以查看它并将其用作自己的服务的模型。您需要将队列写入数据库,以便它是持久的。从onStartCommand()
返回START\u STICKY
,这样,如果您的服务因资源需求而停用,Android将自动重新启动它。谢谢,David。第一个问题呢?如果IntentService被终止,如何重新启动它?要重新启动它,您必须知道它已被终止。正如我在回答中所说,IntentService
在这里不是正确的技术。但是,由于您似乎希望在任何情况下都使用它,因此可以在派生类的构造函数中调用setIntentRedelivery(true)
。这将导致Android自动重新启动IntentService
,如果它在处理Intent
时被终止(即:如果Android在工作时终止了进程)。不,我将使用您建议的方法,只是想知道重新启动IntentService的可能方法。谢谢