版权声明:本文为博主原创文章,未经博主允许不得转载。
这是一个轻量级的库,配置几行代码,就可以实现在Android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程
支持系统2.3到6.0
支持大部分设备,包括三星,华为,oppo,nexus,魅族等等
可以简单对开机广播进行保护
github地址:
https://github.com/Marswin/MarsDaemon
原理分析:
Android 进程常驻(0)----MarsDaemon使用说明
Android 进程常驻(2)----细数利用android系统机制的保活手段
Android 进程常驻(3)----native保活5.0以下方案推演过程以及代码详述
Android 进程常驻(4)----native保活5.0以上方案推演过程以及代码详述
Android 进程常驻(5)----开机广播的简单守护以及总结
正文:
Marsdaemon配置需要三步:
1、明确自己需要常驻的进程service,创建一个和他同进程的receiver,然后在另外一个进程中创建一个service和一个receiver,并写在Manifest中。进程名可以自定义
见/MarsDaemon/DemoMarsdaemon/src/main/AndroidManifest.xml
service1是应用中有业务逻辑的需要常驻进程的service,其他三个组件都是额外创建的,里面不要做任何事情,都是空实现就好了
2、用你的Application继承DaemonApplication,然后在回调方法getDaemonConfigurations中返回一个配置,将刚才注册的进程名,service类名,receiver类名传进来。
代码/MarsDaemon/DemoMarsdaemon/src/main/Java/com/marswin89/marsdaemon/demo/MyApplication1
此时如果你想在自己的application里面复写attachBaseContext方法的话,发现他已经被写为final,因为我们需要抢时
间,所以必须保证进程进入先加载Marsdaemon,如果你想在attchBaseContext中做一些事情的话,可以复写
attachBaseContextByDaemon方法。
如果你的Application已经继承了其他的Application类,那么可以参考Appliation2,在Application的
attachBaseContext的时候初始化一个DaemonClient,然后调用他的onAttachBaseContext同样可以实现,当然
了,他同样需要一个配置来告诉他我们刚才在menifest中配的信息
代码代码/MarsDaemon/DemoMarsdaemon/src/main/java/com/marswin89/marsdaemon/demo/MyApplication2
3、第三步就是尝试去杀掉进程