2011-03-18 85 views
2

我正在写一个汽车扬声器应用程序,里面有一个服务,并听取电话状态的变化。一个服务可以被任务杀手扼杀

我希望服务应该一直存在,不能被杀死。

但是,我发现如果我使用某个任务杀手来杀死我的应用程序,那么我的侦听程序将会有几秒钟无法工作。

虽然我的应用程序似乎几秒钟后自动重新启动,并再次工作。

为什么服务仍然可以被任务杀手杀死?

服务就像一个活动,只是没有用户界面,并且能够自动重启?

感谢您的回答。

回答

3

当您需要资源时,您无法免除您的服务被用户或操作系统自动终止。

您可以做的最好的尝试是编写代码来补偿重新启动,但肯定不会写入,就好像您的服务将无一例外地永远运行。

编辑

Android开发者文档Managing the Lifecycle of a Service对从停止恢复并在回调钩子被调用,而不是有用的信息。

+0

你能告诉我,我怎么弥补这个问题,并避免那几秒钟的空白?谢谢。 – dong221 2011-03-18 17:20:18

+0

@ dong221根据关机类型,您可以做的任何事情都无法挽回浪费的时间,无论是几秒钟还是更长时间。我建议阅读服务生命周期中的Android开发者文档,我将用链接编辑我的答案。 – 2011-03-18 17:22:46

0

因为带走了用户在他/她想要错误时结束进程的能力。相反,如果服务关闭,请尝试编写解决方案,以便XXXXXX发生。

2

这一招添加到您服务的onCreate:

startForeground(R.string.app_name, new Notification()); 

这将防止从服务收盘在低内存,任务杀等。