Android Service 双进程常驻后台(2)

转载 2015年11月18日 10:54:52
最近项目用到Service常驻后台,研究了一下发现手Q和微信都是使用了双进程来保证一键清理后自动复活,copy网上双进程Service的例子,再结合onTrimMemory(),基本实现一键清理后自动复活。

使用双进程Service,关键是在AndroidManifest.xml里面定义Service时加入android:process=":service1"

[html] view plaincopy
  1. <service android:enabled="true" android:name="com.service.demo.Service1" android:process=":service1"></service>  
  2. <service android:enabled="true" android:name="com.service.demo.Service2" android:process=":service2"></service>  
  3.           

双进程Service可以让2个进程互相保护,其中一个Service被清理后,另外没被清理的进程可以立即重启进程。

--------以下onTrimMemory的解释引用于网络

onTrimMemory()是Android 4.0之后提供的API,系统会根据不同的内存状态来回调。根据不同的内存状态,来响应不同的内存释放策略。OnTrimMemory的参数是一个int数值,代表不同的内存状态:

TRIM_MEMORY_COMPLETE:内存不足,并且该进程在后台进程列表最后一个,马上就要被清理
TRIM_MEMORY_MODERATE:内存不足,并且该进程在后台进程列表的中部。
TRIM_MEMORY_BACKGROUND:内存不足,并且该进程是后台进程。
TRIM_MEMORY_UI_HIDDEN:内存不足,并且该进程的UI已经不可见了。 
以上4个是4.0增加
TRIM_MEMORY_RUNNING_CRITICAL:内存不足(后台进程不足3个),并且该进程优先级比较高,需要清理内存
TRIM_MEMORY_RUNNING_LOW:内存不足(后台进程不足5个),并且该进程优先级比较高,需要清理内存
TRIM_MEMORY_RUNNING_MODERATE:内存不足(后台进程超过5个),并且该进程优先级比较高,需要清理内存 
以上3个是4.1增加。

本文的例子源码可以到这里下载http://pan.baidu.com/s/1qW3KvtM

以下是本文运行DEMO的结果:开启服务后双进程Service分别启动(Toast显示出来),然后使用“一键加速”来清理内存,双进程Service被逐一清理(触发Service的onTrimMemory()),但后面又分别重新启动了。

相关文章推荐

service常驻后台

概要 Service:是一个后台服务,专门用来处理常驻后台的工作的组件,也是android四大组件之一。大家在工作当中往往有的时候需求就是需要一个常驻后台的service,比如说,即时通讯、在后台定时...

Android MarsDaemon实现进程及Service常驻

前段时间,就讨论过关于如何让Service常驻于内存而不被杀死,最后的结论就是使用JNI实现守护进程,但是不得不说的是,在没有修改系统源码的情况下,想真正实现杀不死服务,是一件很难的事情,目前除了白名...

关于Service常驻内存不被清理的解决方法.

关于Service常驻内存不被清理的解决方法.
  • jhope
  • jhope
  • 2016年11月29日 17:48
  • 703

Android_常驻进程(杀不死的进程)

一、常驻进程简介 Android常驻进程,就是要让进程在内存中永远存在,让进程保活,不被杀死。可能这时都会喷,这不是流氓软件吗?刚接触android的时候,我也是认为这是很流氓的做法,可是慢慢发现很多...

Android SERVICE后台服务进程的守护

Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务。而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持...
  • t12x3456
  • t12x3456
  • 2013年05月27日 22:25
  • 62048

Android中的进程简介(可见进程,前台进程,后台进程等)

我最近在看一些Android进程方面的知识,发现自己在这方面有些欠缺。所以在查阅完资料后特意在此做一下笔记,巩固这方面的知识。 Android中有多种进程,我列出下面几种:前台进程,可见进程,服务进...

Android应对进程被杀死--Service(五)-- 双进程Service常驻后台

最近项目用到Service常驻后台,研究了一下发现手Q和微信都是使用了双进程来保证一键清理后自动复活,copy网上双进程Service的例子,再结合onTrimMemory(),基本实现一键清理后自动...

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

转载地址:http://www.tuicool.com/articles/vaEZ7rI 本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 最近...

android 双服务常驻后台:防止意见清理

最近项目用到Service常驻后台,研究了一下发现手Q和微信都是使用了双进程来保证一键清理后自动复活,copy网上双进程Service的例子,再结合onTrimMemory(),基本实现一键清理后自动...

Android 多进程环境判断当前进程是否是UI进程

(context 为需要判断的环境上下文) int pid = android.os.Process.myPid(); String processName = ""; Activi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Service 双进程常驻后台(2)
举报原因:
原因补充:

(最多只允许输入30个字)