我是安卓开发新手。我们的要求是在android中运行一个后台服务。这是无法杀死的,或者它能够处理来自任务管理器的 KILL 信号。
有什么办法吗?
我听说过 addShutdownHandler,但是当用户杀死它时它不会被触发。
提前致谢
有什么办法吗?
只需构建您自己的自定义 Android 版本,使用标准 C/C++ 守护程序中的代码,然后分发包含该自定义 Android 版本的 ROM 模块。
如果您尝试创建一个普通的 SDK 应用程序,用户或 Android 本身可以随时出于任何原因摆脱您的进程。
一般来说:不可能。
我应该补充一点,试图强加这样的要求会让你听起来很邪恶——允许用户杀死进程是有原因的。
来自man 7 signal
:
信号 SIGKILL 和 SIGSTOP 不能被捕获、阻止或忽略。
这基本上是内核设计的。想一想:如果一个进程可以忽略所有信号,那么如果它不受控制地逃跑,你将如何阻止它?不,您需要做的是确保不发送 KILL 信号。只要没有具有管理权限的人生成信号,在其自己的用户 ID 下运行您的程序应该可以实现这一点——但即使是这个要求实际上也可能无法满足。通过设计,系统提供了杀死进程的基本能力,理论上用户或系统管理员可能(无论出于何种原因)希望进程被杀死。