Android进程保活

对于程序被杀死,一般我们能做到两个方面优化:

  1. 保证进程的优先级
  2. 当进程被杀死之后的唤醒

保证进程的优先级

进程的优先级

进程根据优先级区分可以分为

  1. 前台进程
  2. 可见进程
  3. 服务进程
  4. 后台进程
  5. 空进程

进程中有个较为具体的值oom_adj,其数值越小对应的优先级越高

oom_adj值对应级别

红色部分是易于被回收的(4-16),绿色部分是不易被回收的(0-4),白色部分则是不会被回收的( -0)。

进程被回收的场景:
  • app按home键处于后台长时间后,由于内存不足会被kill
    可以给app运行一个service,然后通过Service.startForeground() 将service提升为前台服务,这样oom_adj的数值将由4降到1

  • 锁屏状态一段时间之后,省电机制会kill进程
    注册一个监听锁屏开屏的广播,当锁屏之后开启一个1像素的透明activity的,可以将oom_adj提升到0,,再当开屏的时候销毁这个activity

  • 用户手动释放内存
    唯一的方法就是加入手机rom白名单

当进程被杀死之后的唤醒

分两种情况一种是有activity没有service,当没有内存的时候被杀死,打开activity的时候会重新打开之前的activity,另一种是带有service的后台进程被kill,可以通过service自带的api唤醒service

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    //.....
    return START_STICKY;    // service被异常停止后,系统尝试重启service,不能保证100%重启成功
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值