我正在写一个汽车扬声器应用程序,里面有一个服务,并听取电话状态的变化。一个服务可以被任务杀手扼杀
我希望服务应该一直存在,不能被杀死。
但是,我发现如果我使用某个任务杀手来杀死我的应用程序,那么我的侦听程序将会有几秒钟无法工作。
虽然我的应用程序似乎几秒钟后自动重新启动,并再次工作。
为什么服务仍然可以被任务杀手杀死?
服务就像一个活动,只是没有用户界面,并且能够自动重启?
感谢您的回答。
我正在写一个汽车扬声器应用程序,里面有一个服务,并听取电话状态的变化。一个服务可以被任务杀手扼杀
我希望服务应该一直存在,不能被杀死。
但是,我发现如果我使用某个任务杀手来杀死我的应用程序,那么我的侦听程序将会有几秒钟无法工作。
虽然我的应用程序似乎几秒钟后自动重新启动,并再次工作。
为什么服务仍然可以被任务杀手杀死?
服务就像一个活动,只是没有用户界面,并且能够自动重启?
感谢您的回答。
当您需要资源时,您无法免除您的服务被用户或操作系统自动终止。
您可以做的最好的尝试是编写代码来补偿重新启动,但肯定不会写入,就好像您的服务将无一例外地永远运行。
编辑
Android开发者文档Managing the Lifecycle of a Service对从停止恢复并在回调钩子被调用,而不是有用的信息。
因为带走了用户在他/她想要错误时结束进程的能力。相反,如果服务关闭,请尝试编写解决方案,以便XXXXXX发生。
这一招添加到您服务的onCreate:
startForeground(R.string.app_name, new Notification());
这将防止从服务收盘在低内存,任务杀等。
你能告诉我,我怎么弥补这个问题,并避免那几秒钟的空白?谢谢。 – dong221 2011-03-18 17:20:18
@ dong221根据关机类型,您可以做的任何事情都无法挽回浪费的时间,无论是几秒钟还是更长时间。我建议阅读服务生命周期中的Android开发者文档,我将用链接编辑我的答案。 – 2011-03-18 17:22:46