通过使用START_STICKY,如果我的服务被任务管理器崩溃/终止,它会自动重启。我看到有一个重新启动的服务列表,但顺序不同。我希望对服务的重新启动进行优先级排序,以便它可以通过放在队列的最前面来更快地启动。
重新启动服务通常需要15秒到45秒。有没有办法优先考虑这项服务,或者比其他服务更早地启动它?
发布于 2012-02-18 02:34:19
你的服务是长期运行的吗?如果是,试着摆脱它,只在需要的时候启动它。Android服务并不意味着作为守护进程运行,它们意味着在不需要用户交互和界面时作为短暂的工作进程在后台运行。
大多数“我只是坐着”的服务可以通过这种方式收听广播意图并成为一个好公民。
另一件事:如果你的服务已经短时间运行,并且任务杀手是活动的,这很容易:这是用户的问题,而不是你的错。系统不需要任务杀手,你也不应该关心他们。用户应该知道使用它们是不健康的。
发布于 2012-02-13 01:57:06
我猜这个解决方案有点脏,但您可以使用一个新的服务,该服务以START_STICKY
开头,并将所有其他服务设置为START_NOT_STICKY
。
然后,您可以使用新服务来启动所有其他服务(尽管这不一定是必需的)。这实际上是一个简单的实现,因为您可以将整个意图传递给应该启动的服务。
然后,您可以在所有服务的OnDestroy()
上添加一个广播,以告诉新服务,其中一个旧服务已被系统杀死。您还可以通过OnDestroy()
传递旧的启动意图,这样它就会重新启动。
如果您的新服务被终止,您可以在重新启动后检查是否有任何其他服务也被终止,然后确定重新启动的优先级。
https://stackoverflow.com/questions/9185354
复制相似问题