优先安排重启崩溃的Android服务的调度

5
通过使用START_STICKY,如果我的服务被任务管理器崩溃/关闭,它会自动重新启动。我看到有一系列服务会以不同的顺序重新启动。我想优先重启这个服务,以便将其放在队列的前面更快地启动。
通常需要15秒到45秒来重新启动该服务。是否有一种方法可以优先启动此服务而不是其他服务?
2个回答

0

我猜这个解决方案有点不太好,但你可以使用一个新的服务,它以START_STICKY开始,并将所有其他服务设置为START_NOT_STICKY

然后,您可以使用新服务来启动所有其他服务(虽然这并不一定需要)。这实际上是一个简单的实现,因为您可以将整个意图传递给要启动的服务。

然后,您可以在所有服务的OnDestroy()上添加广播,告诉新服务,其中一个旧服务被系统杀死了。您还可以通过OnDestroy()传递旧的启动意图,以便重新启动。

如果您的新服务被杀死,您可以在重新启动后检查是否有任何其他服务也被杀死,然后优先考虑重新启动。


0

你的服务是长时间运行的吗?如果是的话,尽量摆脱它,并且只在需要时启动。Android服务不应该作为守护进程运行,而是在没有用户交互和界面需求时作为短暂的后台工作程序运行。

大多数“我只是闲着”的服务可以监听广播意图,并以这种方式成为良好的系统组件。

另外一件事:如果你的服务已经是短时间运行的,并且有任务管理器在运行,那很简单:这是用户的问题,而不是你的错。系统不需要任务管理器,你也不应该关心它们。用户应该知道使用它们对健康无益。


我的是“另一件事”。我认为我应该添加一条消息,将我的应用程序添加到任务管理器的忽略列表中。 - dcanh121

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接