提高Android应用的后台存活

            每个Android 应用进程都会分配一定的运行内存,当超出运行内存时就会报OOM。平常代码开发时要注意内存泄漏的问题,内存泄漏的问题本质就是生命周期较长的对象持有生命周期较短的对象的引用,导致生命周期较短的实例无法释放回收。

            所谓的进程保活实际上就是降低oom_adj的值 ,oom_adj值对应进程分类

oom_adj分类
< 0

Native 进程

0前台进程
2可见进程
5前台服务

 查看引用进程oom_adj的值shell 命令:

        1)ps |grep "包名"  得到进程号

        2)  cat /proc/{pid}/oom_adj   查看进程对应下的oom_adj的值

     

查看应用分配的内存大小:

      方式一:代码查看

                    Runtime rt=Runtime.getRuntime();
                    long maxMemory=rt.maxMemory();
      方式二:adb命令查看

                    adb shell cat /system/proc

                    找到dalvik.vm.heapgrowthlimit

   AndroidManifest.xml 清单application节点下添加:

                 android:largeHeap="true" 可扩充运行内存,具体大小为  /system/proc 文件内   dalvik.vm.heapsize 的值

 

目前进程保活的几种方式:

1.监听屏幕熄灭状态,打开一像素的Activity

2.后台播放无声音乐

3.双进程的互相唤醒

4.采用JobService 轮询开启服务

保活技术只是仅仅降低应用的oom_adj值,使系统回收的概率变小。但是不能保证一定不会被回收,应用在特定的情况下还是会被杀死

 

附上demo下载地址:

https://download.csdn.net/download/swedne/12754420

             

如有另类的保活技术还是代码问题欢迎评论指出,不胜赐教探讨

 

 

                 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值