通过使用START_STICKY,如果我的服务被任务管理器崩溃/杀死,它会自动重新启动。我看到有一个服务列表重新启动但顺序不同。我想优先考虑重新启动服务,以便通过将其放在队列的前面来更快地启动。
重新启动服务通常需要 15 秒到 45 秒。有没有办法比另一个更早地优先考虑或启动这项服务。
通过使用START_STICKY,如果我的服务被任务管理器崩溃/杀死,它会自动重新启动。我看到有一个服务列表重新启动但顺序不同。我想优先考虑重新启动服务,以便通过将其放在队列的前面来更快地启动。
重新启动服务通常需要 15 秒到 45 秒。有没有办法比另一个更早地优先考虑或启动这项服务。
我想这个解决方案有点脏,但你可以使用一个START_STICKY
以START_NOT_STICKY
.
然后,您可以使用新服务启动所有其他服务(尽管这不是必需的)。这实际上是一个简单的实现,因为您可以将整个意图传递给将要启动的服务。
然后你可以在所有服务上添加一个广播OnDestroy()
来告诉新服务,其中一个旧服务被系统杀死了。您还可以通过 传递旧的起始意图OnDestroy()
,以便重新启动。
如果您的新服务被杀死,您可以在重新启动后检查是否有任何其他服务也被杀死,然后优先考虑重新启动。
您的服务是否长期运行?如果是,请尝试摆脱它,仅在需要时启动它。Android 服务并不意味着作为守护进程运行,它们意味着在不需要用户交互和界面时作为短暂的工作人员在后台运行。
大多数“我只是坐在那里”的服务可以收听广播意图并通过这种方式成为一个好公民。
另一件事:如果您的服务已经运行很短并且任务杀手处于活动状态,那很容易:这是用户的问题,而不是您的错。系统不需要任务杀手,你不应该照顾它们。用户应该知道使用它们是不健康的。