2011-05-25 79 views
1

我有一个应用程序(有一个部分)需要始终运行;它不作为服务启动,应用程序启动一个以root身份运行的守护进程(用c编写)。将Android杀死我的守护进程是以root身份运行吗?

是android会杀死它我回收内存?它是否以root身份运行保护我免受此影响?如果没有,我能做些什么来确保它永不死亡,如果有,它又会重新开始?

回答

1

如果你的守护进程是纯粹的本地应用程序(例如,通过系统的inittab启动),而不是在APK上下文中运行的东西,那么Android永远不会杀死它。至少,在我的情况下,正是这一点,我的守护进程终止的唯一时间就在我修复SIGSEGV之前;)

+0

真棒,用inittab好主意。谢谢。 – cidermonkey 2011-05-26 00:26:36

0

我一段时间都没有在android上工作过,也没有和root运行进程一起工作。但我确实相信,无论您的应用运行的是什么用户,android操作系统都可能会发出'do stop',如果内存不足,可能会发出'kill'命令。我之所以这样说是因为与完整的Linux内核类似,如果它需要内存,它会找到一种方法来获取它。我有一部HTC手机,而且我实际上已经看到内核杀死HTC的感觉以获得RAM,这基本上重置了手机。有几种方法可以设置何时启动应用程序,我相信您可以设置钩子,指出何时应基于电话事件启动应用程序。与手机收到txt时txt msg应用程序的启动方式类似,或者即使您在任务管理器中终止应用程序,警报应用程序仍会关闭。我相信你可以在应用程序xml配置中设置这些。

祝你好运!

+0

这非常有趣,但是你怎么知道它杀死了回收内存的感觉?即你怎么知道这不仅仅是感觉崩溃? – cidermonkey 2011-05-26 00:28:26

+0

我无法确切知道它没有意义崩溃......但所有迹象都指出了这一点。当它是焦点的主要应用时,我从来没有做过这件事。它只会在我使用的应用程序中被杀死,而我知道的应用程序会吸收大量的RAM,Android开发人员文档指出这是该过程。由于Sense并不直接属于操作系统的一部分,更多的是一层,所以我最好猜测这就是发生了什么 – CenterOrbit 2011-05-31 22:44:29

+0

我想如果我真的确定知道是否可以打开调试并观察系统在加载一个吸收RAM的应用程序时通过eclipse登录。理论上,发出kill命令时会打印出sys日志,哪些应用程序受到影响。这将证明我的假设。 – CenterOrbit 2011-05-31 22:46:24

相关问题