【发布时间】:2011-03-18 17:11:50
【问题描述】:
我正在编写一个内置服务的自动扬声器应用程序,并监听手机状态变化。
我希望该服务应该一直存在并且不能被杀死。
但是,我发现如果我使用一些任务杀手来杀死我的应用程序,我的监听器将在几秒钟内无法工作。
虽然我的应用程序似乎在几秒钟后自动重启并再次工作。
为什么服务仍然可以被任务杀手杀死?
服务是否就像一个活动,只是没有 UI,并且能够自动重启?
感谢您的回答。
【问题讨论】:
标签: android
我正在编写一个内置服务的自动扬声器应用程序,并监听手机状态变化。
我希望该服务应该一直存在并且不能被杀死。
但是,我发现如果我使用一些任务杀手来杀死我的应用程序,我的监听器将在几秒钟内无法工作。
虽然我的应用程序似乎在几秒钟后自动重启并再次工作。
为什么服务仍然可以被任务杀手杀死?
服务是否就像一个活动,只是没有 UI,并且能够自动重启?
感谢您的回答。
【问题讨论】:
标签: android
当需要资源时,您不能免除您的服务被用户或操作系统自动终止的责任。
您能做的最好的事情是尝试编写代码来补偿重新启动,但当然不要写得好像您的服务将永远无异常地运行。
编辑
Android 开发者文档Managing the Lifecycle of a Service 提供了有关从停止中恢复以及回调挂钩何时被调用和不被调用的有用信息。
【讨论】:
将此技巧添加到您的服务 onCreate:
startForeground(R.string.app_name, new Notification());
它将防止服务因内存不足、任务终止等而关闭。
【讨论】:
因为剥夺用户在他/她想要的时候结束进程的能力是错误的。而是尝试编写解决方法,以便在服务关闭时发生 XXXXXX。
【讨论】: