2012-08-04 91 views
0

我是新手android设备。我们的要求是在android中运行后台服务。这是不可驱动的或它能够处理来自任务管理器的KILL信号。在服务中处理KILL信号?

是否有任何方法可以做到这一点?

我听说过addShutdownHandler,但它不会在用户杀死它时触发。

在此先感谢

回答

0

man 7 signal

的信号SIGKILL和SIGSTOP不能被捕获,阻止或忽略。

这基本上是由内核设计的。想一想:如果一个过程可以忽略所有信号,那么如果它失控失控,你将如何阻止它?不,你必须做的是看到KILL信号没有被发送。只要没有具有管理权限的人员生成信号,在自己的用户名下运行程序就可以实现这一目标 - 但即使这样的要求实际上也不可能达到。通过设计,系统提供了杀死进程的基本能力,理论上用户或系统管理员可能(无论出于何种原因)希望进程被杀死。

+0

但是碰撞处理程序呢? http://markmail.org/message/iuw3otxybuui26nb – 2012-08-04 12:06:02

+0

你可以通过编写一个启动程序来拦截 - 或者更确切地说 - 对一次崩溃做出反应:一个小型的,独立的程序,仅用于启动和(如果有必要)监视主程序。如果*启动程序*获取KILL,这不会对您有所帮助,否则它应该按照您的要求进行操作。 – thb 2012-08-04 12:20:19

2

有没有什么办法可以做到这一点?

只有在一个标准的C/C++守护建设的Android自己的定制版本,与您的代码,然后分发包含定制的Android版本ROM国防部。

如果您尝试创建普通的SDK应用程序,则用户或Android本身可能会随时因任何原因而摆脱您的过程。

+0

thanks dude ..但是怎么样JAVA + C崩溃处理程序..是否有任何其他方式得到通知时,进程被杀害? – 2012-08-04 12:09:35

1

一般:不可能。

我应该补充说,试图强加这样的要求会让你听起来很邪恶 - 有一个原因允许用户终止进程。

+0

谢谢安德鲁..是crashHandler可以捕获KILL信号?我已经发布了下面的链接http://markmail.org/message/iuw3otxybuui26nb可以任何一个解释JAVA + C方法? – 2012-08-04 12:08:12