我有一個應用程序(有一個部分)需要始終運行;它不作爲服務啓動,應用程序啓動一個以root身份運行的守護進程(用c編寫)。將Android殺死我的守護進程是以root身份運行嗎?
是android會殺死它我回收內存?它是否以root身份運行保護我免受此影響?如果沒有,我能做些什麼來確保它永不死亡,如果有,它又會重新開始?
我有一個應用程序(有一個部分)需要始終運行;它不作爲服務啓動,應用程序啓動一個以root身份運行的守護進程(用c編寫)。將Android殺死我的守護進程是以root身份運行嗎?
是android會殺死它我回收內存?它是否以root身份運行保護我免受此影響?如果沒有,我能做些什麼來確保它永不死亡,如果有,它又會重新開始?
如果你的守護進程是純粹的本地應用程序(例如,通過系統的inittab啓動),而不是在APK上下文中運行的東西,那麼Android永遠不會殺死它。至少,在我的情況下,正是這一點,我的守護進程終止的唯一時間就在我修復SIGSEGV之前;)
我一段時間都沒有在android上工作過,也沒有和root運行進程一起工作。但我確實相信,無論您的應用運行的是什麼用戶,android操作系統都可能會發出'do stop',如果內存不足,可能會發出'kill'命令。我之所以這樣說是因爲與完整的Linux內核類似,如果它需要內存,它會找到一種方法來獲取它。我有一部HTC手機,而且我實際上已經看到內核殺死HTC的感覺以獲得RAM,這基本上重置了手機。有幾種方法可以設置何時啓動應用程序,我相信您可以設置鉤子,指出何時應基於電話事件啓動應用程序。與手機收到txt時txt msg應用程序的啓動方式類似,或者即使您在任務管理器中終止應用程序,警報應用程序仍會關閉。我相信你可以在應用程序xml配置中設置這些。
祝你好運!
這非常有趣,但是你怎麼知道它殺死了回收內存的感覺?即你怎麼知道這不僅僅是感覺崩潰? – cidermonkey 2011-05-26 00:28:26
我無法確切知道它沒有意義崩潰......但所有跡象都指出了這一點。當它是焦點的主要應用時,我從來沒有做過這件事。它只會在我使用的應用程序中被殺死,而我知道的應用程序會吸收大量的RAM,Android開發人員文檔指出這是該過程。由於Sense並不直接屬於操作系統的一部分,更多的是一層,所以我最好猜測這就是發生了什麼 – CenterOrbit 2011-05-31 22:44:29
我想如果我真的確定知道是否可以打開調試並觀察系統在加載一個吸收RAM的應用程序時通過eclipse登錄。理論上,發出kill命令時會打印出sys日誌,哪些應用程序受到影響。這將證明我的假設。 – CenterOrbit 2011-05-31 22:46:24
真棒,用inittab好主意。謝謝。 – cidermonkey 2011-05-26 00:26:36