服务 进程守护 MarsDaemon 简介
MarsDaemon 基本功能
It is a lite library, you can make your project depend it easily, and your project will be UNDEAD不会被杀死.
support to keep alive from Android_API 9 to Android_API 23
support to keep alive in most of devices各种机型(contains Sumsung\Huawei\Meizu\Mi\Nexus..)
support to keep alive in FORCE_CLOSE强制关闭 from SystemSettings系统设置 and MEMORY_CLEAN内存清理 from third-part第三方清理工具 apps (such like CleanMaster\360 and so on)
support to keep BOOT_RECEIVER完美自启动 work well simplely
my Blog in Chinese here: http://blog.csdn.net/marswin89/article/details/50917098
Version 1.0
Installation 使用步骤
STEP1
make your project depend on LibMarsdaemon, and regist 2 Service and 2 BroadcastReceiver in your manifests in 2 different process.
<service android:name=".Service1" android:process=":process1"/>
<receiver android:name=".Receiver1" android:process=":process1"/>
<service android:name=".Service2" android:process=":process2"/>
<receiver android:name=".Receiver2" android:process=":process2"/>
But the others is used by Marsdaemon, so DONNOT do anything inside.
STEP2
make your application extends DaemonApplication and override the method getDaemonConfigurations(). Return back the confugirations.
@Override
protected DaemonConfigurations getDaemonConfigurations() {
DaemonConfigurations.DaemonConfiguration configuration1 = new DaemonConfigurations.DaemonConfiguration("com.marswin89.marsdaemon.demo:process1", Service1.class.getCanonicalName(), Receiver1.class.getCanonicalName());
DaemonConfigurations.DaemonConfiguration configuration2 = new DaemonConfigurations.DaemonConfiguration("com.marswin89.marsdaemon.demo:process2", Service2.class.getCanonicalName(), Receiver2.class.getCanonicalName());
DaemonConfigurations.DaemonListener listener = new MyDaemonListener();
//return new DaemonConfigurations(configuration1, configuration2);//listener can be null
return new DaemonConfigurations(configuration1, configuration2, listener);
}
see more details in MyApplication1 in Demo
if your application has extends another application, you should create a DaemonClient and perfrom it in attachBaseContext(), DONOT forget perform super.attachBaseContext() before!
private DaemonClient mDaemonClient;
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
mDaemonClient = new DaemonClient(createDaemonConfigurations());
mDaemonClient.onAttachBaseContext(base);
}
STEP3
Launch the Service once, and try to kill it.
相关分析文章
这是一个轻量级的库,配置几行代码,就可以实现在Android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean master获取root权限下都无法杀死进程
支持系统2.3到6.0
支持大部分设备,包括三星,华为,oppo,nexus,魅族等等
可以简单对开机广播进行保护
github地址:
原理分析:
本文来自博客园,作者:白乾涛,转载请注明原文链接:https://www.cnblogs.com/baiqiantao/p/6375739.html