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不被Kill掉的方法--双Service守护 && Android实现双进程守护

保持Service不被Kill掉的方法--双Service守护 AndroidManifest.xml:
  • boyupeng
  • boyupeng
  • 2015年07月20日 22:10
  • 21708

双进程守护保证Service后台任务一直运行不被杀死

本来想实现一个一直运行的Service,使用alarmManger定时开启Service实现刷新功能,可是发现在android5.0之后会在清理后台任务时杀死,在android5.0之前的如果使用36...
  • wei_chong_chong
  • wei_chong_chong
  • 2016年05月30日 19:03
  • 2174

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

转载地址:http://www.tuicool.com/articles/vaEZ7rI 本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 最近...
  • lijinhua7602
  • lijinhua7602
  • 2015年08月17日 23:55
  • 524

android跨进程启动service

1,启动服务的客户端 MyLog.i(TAG,"启动服务"); String shopId = PreferencesUtil.getString(MainActivity.this, Consta...
  • lkx94
  • lkx94
  • 2016年02月22日 17:09
  • 2048

Android service 不被杀死“永不退出的服务”(双进程,服务,多进程,微信)

本文解析了微信的服务为什么不被杀掉,以及服务应该怎样设计才合理,制作一个不死的服务到底可能吗?,以及是否真的需要一个不死的服务。...
  • robert_cysy
  • robert_cysy
  • 2016年12月21日 20:24
  • 8470

Android 启动后台运行程序(Service)

Android开发中,当需要创建在后台运行的程序的时候,就要使用到Service。Service 可以分为有无限生命和有限生命两种。特别需要注意的是Service跟Activities是不同的(简单来...
  • tody_guo
  • tody_guo
  • 2012年03月16日 16:03
  • 43384

安卓开发之使用双进程守护和进程提权来实现服务进程保活

一、进程保活 在 如何让我们的Android应用进程保活? 这篇文章里总结了一些进程保活方法,下文以双进程守护和进程提权来保活我们的服务进程。双进程守护: 主要设计AB两个不同服务进程,A进程的...
  • cxmscb
  • cxmscb
  • 2016年09月01日 19:37
  • 11330

Android SERVICE后台服务进程的守护

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

Android双进程守护service保活

android应用进程保活可以从以下来年个方面考虑 1、尽量保证应用进程不被杀死。 2、进程被杀死后能够复活。 要保证进程不被杀死是不可能的,系统在资源紧缺的情况下回根据进程优先等级杀掉有限等...
  • ReturnNull0
  • ReturnNull0
  • 2016年12月19日 23:44
  • 1965

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

一、常驻进程简介 Android常驻进程,就是要让进程在内存中永远存在,让进程保活,不被杀死。可能这时都会喷,这不是流氓软件吗?刚接触android的时候,我也是认为这是很流氓的做法,可是慢慢发现很多...
  • Two_Water
  • Two_Water
  • 2016年08月05日 14:38
  • 22920
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Service 双进程常驻后台(2)
举报原因:
原因补充:

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