android service常驻内存的一点思考

转载 2015年11月18日 10:55:27

我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它.

我分别在android4.3和android5.0上面测试了LBE的清理内存功能,看看是不是会达到不被清理的目的,发现在这两个版本上还是有一些区别的

先说一下我们的代码,我们的service在单独的进程中,在service中调用JNI的代码,然后fork出一个进程,然后让我们的service进程和fork出来的子进程一直运行.

看清理之后的状态

  1. android4.4上面,JNI fork出来的进程没有被杀死,可以把被杀死的service进程重启
  2. android5.0上面还有效么?清理内存操作之后,可以看到fork出来的进程也会被杀死..看来这种方法已经失效了..

为什么5.0上面就不行了呢,咱们看一下activitymanagerservice,LBE的清理内存应该调用的killBackgroundProcesses,看看他们有什么区别

5.0的代码

<code class="hljs avrasm has-numbering">                Process<span class="hljs-preprocessor">.killProcessQuiet</span>(app<span class="hljs-preprocessor">.pid</span>)<span class="hljs-comment">;</span>
                Process<span class="hljs-preprocessor">.killProcessGroup</span>(app<span class="hljs-preprocessor">.info</span><span class="hljs-preprocessor">.uid</span>, app<span class="hljs-preprocessor">.pid</span>)<span class="hljs-comment">;</span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li></ul>

4.3的代码

<code class="hljs avrasm has-numbering">                 Process<span class="hljs-preprocessor">.killProcessQuiet</span>(pid)<span class="hljs-comment">;</span></code><ul style="display: block;" class="pre-numbering"><li>1</li></ul>

5.0的代码增加了killprocessgroup..

看来fork进程的方式来让android服务常驻内存的方式在5.0上面不管用了…

Android如何让APP进程常驻内存?

Android如何让APP进程常驻内存? 如何让Android程序常驻内存,像QQ一样拥有强劲的生命力不被系统杀死?它传说中的进程保活(人类也在探索永生不死,App亦然),本文将...
  • lihaoxiang123
  • lihaoxiang123
  • 2017年03月16日 14:15
  • 3774

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

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

探讨Android6.0及以上系统APP常驻内存(保活)实现-复活篇

随着AlarmManager唤醒、native进程拉起等方式的失效,APP常驻内存的时代将不复存在,尤其是当APP进程被杀死后,基本很难将其拉起。从用户的角度来讲,这是一种很好的发展,而这一切应该归功...
  • AndrExpert
  • AndrExpert
  • 2017年07月15日 17:02
  • 8540

Android如何让APP进程常驻内存?

Android如何让APP进程常驻内存? 如何让Android程序常驻内存,像QQ一样拥有强劲的生命力不被系统杀死?它传说中的进程保活(人类也在探索永生不死,App亦然),本文将...
  • wenql209
  • wenql209
  • 2017年07月18日 12:21
  • 865

探讨Android6.0及以上系统APP常驻内存(保活)实现-争宠篇

APP常驻内存(保活),旧事重提,距离上一次的研究亦有半年有余。最近,用户反馈说多进程守护方案在华为Mate8(7.0)保活效果不是很好,有时候还是不能及时收到消息,于是,又带着怀疑的眼光,重新找回原...
  • AndrExpert
  • AndrExpert
  • 2017年07月13日 11:36
  • 9374

探讨Android6.0及以上系统APP常驻内存(保活)实现-复活篇

探讨Android6.0及以上系统APP常驻内存(保活)实现-复活篇 (转载请声明出处:http://blog.csdn.NET/andrexpert/article/details/7517458...
  • u014159143
  • u014159143
  • 2017年07月28日 16:06
  • 343

Android几种Service常驻内存的小思路

老话说的好:躲得了初一,躲不过高三 ! 大多数的Android开发者遇到的一个问题—如何保证Service常驻内存! 最近我终于也在项目中务必幸运的遇到了先来了解一下什么是Service常驻内存。所谓...
  • zxm317122667
  • zxm317122667
  • 2017年02月20日 10:23
  • 3385

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

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

Android几种Service常驻内存的小思路

老话说的好:躲得了初一,躲不过高三 ! 大多数的Android开发者遇到的一个问题—如何保证Service常驻内存! 最近我终于也在项目中务必幸运的遇到了先来了解一下什么是Service常驻内存。所谓...
  • zxm317122667
  • zxm317122667
  • 2017年02月20日 10:23
  • 3385

Android如何让APP进程常驻内存?

Android如何让APP进程常驻内存? 如何让Android程序常驻内存,像QQ一样拥有强劲的生命力不被系统杀死?它传说中的进程保活(人类也在探索永生不死,App亦然),本文将...
  • wenql209
  • wenql209
  • 2017年07月18日 12:21
  • 865
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android service常驻内存的一点思考
举报原因:
原因补充:

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