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