1. 程式人生 > >Android MarsDaemon實現進程及Service常駐

Android MarsDaemon實現進程及Service常駐

小米 target 輕量 sda 定義 win 同進程 service 自己的

前段時間。就討論過關於怎樣讓Service常駐於內存而不被殺死,最後的結論就是使用JNI實現守護進程,可是不得不說的是,在沒有改動系統源代碼的情況下,想真正實現殺不死服務,是一件非常難的事情。眼下除了白名單的方式。也好像沒有發現有一款APP能做到無論怎麽搞它都能自己主動重新啟動...

近期在GitHub上發現了一個比較有意思的輕量級庫:MarsDaemon,進行一些簡單的配置,就能夠實如今android上實現進程常駐,在系統強殺下或360安全衛士等軟件下,都無法真正殺死進程。

當然了。在華為的pad上試了一下。手動在程序管理裏面停止應用,並未自己主動重新啟動。可是通過一些安全衛士的軟件kill掉進程之後,還是能夠自己主動重新啟動的。

先不說這個能不能真正的實現殺不死服務,能做到這一步就已經適用於大部分的APP的需求了,所以還是值得一看的,有興趣的童鞋還能夠去研究一下底層實現過程~

先來回想一下之前關於怎樣使用JNI實現守護進程:http://blog.csdn.net/yyh352091626/article/details/50542554

事實上核心思路差點兒相同。就是守護進程。該庫支持的Android系統為2.3~6.0,差點兒適用全部的Android手機了。包含三星、華為、魅族、小米、聯想等。

MarsDaemon庫Demo下載地址:http://download.csdn.net/detail/yyh352091626/9468312

詳細實現過程例如以下:

一、在Manifest中配置Service。並創建一個和他同進程的receiver,然後在另外一個進程中創建一個Service和一個Receiver。進程1就是須要常駐的進程。進程2放空即可。

技術分享


二、讓我們自己的Application繼承DaemonApplication,並重寫getDaemonConfigurations進行相關配置。

技術分享

三、假設不想繼承DaemonApplication而直接繼承系統的Application或自己定義Application的話的話,在onCreate裏面進行初始化。例如以下:

技術分享

四、利用安全衛士等清理軟件Kill掉進程。發現進程自己主動重新啟動。




Android MarsDaemon實現進程及Service常駐