我正在写一个内置服务的自动扬声器应用程序,并听取手机状态的变化。
我希望服务应该一直存在,不能被杀死。
然而,我发现如果我使用一些任务杀手来杀死我的应用程序,那么我的监听器将无法工作几秒钟。
虽然我的应用程序似乎会在几秒钟后自动重启并再次运行。
为什么服务仍然会被任务杀手杀死?
服务就像一个活动,只是没有UI,能够自动重启吗?
感谢您的回答。
答案 0 :(得分:3)
当您需要资源时,您不能免除您的服务被用户终止或由操作系统自动终止。
你能做的最好的事情就是尝试编写代码以补偿重启,但当然不要写,好像你的服务将永远无例外地运行。
修改强>
Android开发人员文档Managing the Lifecycle of a Service提供了有关从停止恢复以及何时调用回调挂钩的有用信息。
答案 1 :(得分:2)
将此技巧添加到您的服务onCreate:
startForeground(R.string.app_name, new Notification());
它将阻止服务关闭内存不足,任务查杀等。
答案 2 :(得分:0)
因为在他/她想要的时候取消用户结束流程的能力是错误的。而是尝试编写一个解决方案,以便在服务关闭的情况下,XXXXXX发生。