Android MarsDaemon实现进程及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放空即可。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="320" >

二、让我们自己的Application继承DaemonApplication,并重写getDaemonConfigurations进行相关配置。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="400" >

三、假设不想继承DaemonApplication而直接继承系统的Application或自己定义Application的话的话,在onCreate里面进行初始化。例如以下:

四、利用安全卫士等清理软件Kill掉进程。发现进程自己主动重新启动。

时间: 2024-08-05 22:23:28

Android MarsDaemon实现进程及Service常驻的相关文章

Android 双进程Service常驻后台,无惧“一键清理”

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 最近项目用到Service常驻后台,研究了一下发现手Q和微信都是使用了双进程来保证一键清理后自动复活,copy网上双进程Service的例子,再结合onTrimMemory(),基本实现一键清理后自动复活. 使用双进程Service,关键是在AndroidManifest.xml里面定义Service时加入android:process=":service1": <service andro

保持Service不被Kill掉的方法--双Service守护 &amp;&amp; Android实现双进程守护

本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ?Android.content.Context  ?android.content.ContextWrapper  ?android.app.Service Service是应用程序Application的一个组件(component).它的作用有两点:1.用来提供一个长期在后台运行并且不与用户交互的操作,2.也可以为其他应用程序提供服务.Service

Android中通过Messenger与Service实现进程间双向通信

Android中的Service和其调用者既可以在同一个App中,也可以在不同的App.如果Service在App1中,而调用Service的客户端在App2中,那么我们就可以用Service实现进程间的相互通信.本文将介绍如何通过bindService和Messenger实现进程间通信(IPC),如果对bindService绑定服务和Binder不熟悉,可参见<Android中bindService的使用及Service生命周期>,理解该博文是本文的基础. 让Service实现与其他进程通信

Android学习笔记二十六.跨进程调用Service(AIDL Service)

跨进程调用Service(AIDL Service) 一.AIDL Service 1.什么是AIDL Service? AIDL,即Android Interface Definition Language.是Android用于定义远程接口,AIDL接口定义语言的语法比较简单,这种接口定义语言并不是真正的编程语言,它只是定义两个进程之间的通信接口.AIDL的语法与Java接口很相似,但存在如下几点差异: (1)AIDL定义接口的源代码必须以.aidl结尾; (2)AIDL接口中用到数据类型,除

Android学习笔记五之Service

Android学习笔记五之Service 1.什么是Service? 什么是Service?Service是Android系统的四大组件之一,官方文档是这样描述Service的: A Service is an application component that can perform long-running operations in the background and does not provide a user interface. Another application comp

【转】Android开发之如何保证Service不被杀掉(broadcast+system/app)

Service简介 1.Service 每个Service必须在manifest中 通过<service>来声明. 可以通过contect.startservice和contect.bindserverice来启动. 和其他的应用组件一样,运行在进程的主线程中.这就是说如果service需要很多耗时或者阻塞的操作,需要在其子线程中实现(或者用系统提供的IntentService,它继承了Service,它处理数据是用自身新开的线程).[当然你也可以在新的线程中startService,这样Se

Android中的进程

每个Android程序默认情况下只有一个进程,这个进程是在自己独立的空间中运行,默认拥有独立的Dalvik虚拟机实例.每一个DVM都是Linux中的一个进程,所以可以认为Android dvm的进程和Linux的进程, 应用程序的进程是同一概念. 但是也可以指定Activity或者Service在Remote 进程中执行.多数情况下,只有在用户认为应用退出后还需要继续后台长期运行的应用,才需要这样做.此时,该应用有两个进程. 如何退出进程 1.System.exit(0)  这个方法是用来结束当

Android Api Component---翻译Bound Service

bound service是一个client-server接口中的server端.bound service允许组件(像activity)绑定service,发送请求,接受响应,并且甚至执行进程间通信(IPC).典型的bound service寄宿于它服务的另一个应用程序组件中,并且不会无限期的运行于后台. 这篇文档教你如何创建一个bound service,也包含了如何从其他的应用程序组件中绑定service.然而,一般来说,你也应该参考Service文档取得关于service的额外的一些信息

Android之——获取进程总数、内存、任务列表

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47263863 如今,基于Android平台的应用越来越多,不乏这样一些应用程序,这些应用可以多手机中的进程,内存和任务列表进行管理.Android系统中没有自带的应用程序对这些数据进行管理.大家不禁会说,Android的应用设置里面有这些功能啊!是的,虽然应用设置里面有,但是我们如果想看一下系统的进程,还要跑到系统设置里面去看吗?这样是不是很麻烦?是不是很挫呢?那获取Androi