Android进程守护, 服务长存

来源:互联网 发布:linux w重复 编辑:程序博客网 时间:2024/04/29 18:08

                                                        进程守护

LibMarsdaemon是一个轻量级的库,仅需配置几行代码就可在android上实现进程常驻。也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程。

使用

前提:导入LibMarsdaemon并添加依赖

导入:File->new->import module

添加依赖:项目点击->open module setting->dependencies->点击+号-> moduledependencies

                   将LibMarsdaemon添加进去

第一步:

四个类:

Service1:需要常驻进程的Service, Service1继承Service,实现相关的方法,并在onCreat()或者onStartCommand()方法中做自己想要不能被系统或者手机卫士软件停止的事情。

 

Service2:辅助类,继承Service,空实现就行(实现onBind()方法就行了,不用在里面做任何操作)。

 

Receiver1和Receiver2:辅助类,继承BroadcastReceiver,空实现(实现onReceiver()方法就行了,不用在里面做任何操作)

 

 

第二步

配置文件注册Service和Receiver

其中name对应的属性值为第一步所写的四个类的全类名。

Process属性对应为进程名,从中可以看出Service1和Receiver1共同在process1进程中,而Service1和Receiver2共同在process2进程中。

Tips:这也是守护进程的关键,在底层中我们使用这两个进程的名字互相监听,当我们需要常驻的进程死亡,监听进程立马监听到然后再次开启需要常驻的进程。当监听进程死亡时,常驻的进程也会监听到,然后再次开启监听进程。当然,当两个进程同时死亡时,我们的这套机制就没用了,但是杀死android 机制杀死进程是一个一个杀死同时间隔时间非常短,然而利用底层代码,我们可以在这间隔只有几十毫秒的时间里把启动进程的消息发出去就行了。

 

第三步

实现项目的Application继承自Application。如MyApplication.

当然要修改createDaemonConfigurations方法中的标记部分,改为自己在配置文件中所写的进程名(项目报名+“:process1”(配置文件中所写的进程名))。另外如果Service和Receiver名称也有改的,也要改过来。

 

最后:在项目中开启你要常驻的Service

 

end


感谢开源,感谢写LibMarsdaemon库的作者。

0 0
原创粉丝点击