Android进程优先级、进程的回收策略、进程保活方案

进程保活

  • 让应用长期存活于系统中,即使被杀死了,也可以通过一定手段自动拉活。
  • 例如手机定位、Push等

Android进程的优先级

  • 1、Foreground process 前台进程
  • 2、Visible process 可见进程
  • 3、Service process 服务进程
    例如:音乐播放
  • 4、Background process 后台进程(随时会被杀死)
  • 5、Empty process 空进程(随时会被杀死)
    用于缓存,缩短下次启动的时间

Android进程的回收策略

  • Low memory killer
    通过OOM_ODJ(判断进程的优先级)评分机制,对进程进行打分,然后将分数高的进程判定为bad进程,杀死并释放内存

利用系统广播拉活

  • 在触发系统事件的时候,会发出相应的广播,我们可以在Manifest中静态注册广播接受者来监听这个广播,(例如开机、网络变化)
  • 缺点:
    • 广播接受者被管理软件或者系统软件通过自启动管理等禁用的情况下是无法进行自启动的。
    • 系统广播事件是不可控制的,只有在发生事件的时候才能执行拉活,无法保证进行被杀死后及时拉活。

利用系统Service机制拉活

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }
  • 在Service中有个onStartCommand回调方法,将其返回值设置成START_STICKY,当Service因为系统内存不足被杀掉后,在未来某个时间内,当系统内存充足时会尝试重建这个Service,然后重新回调onStartCommand方法。
  • 缺点:
    • 仅当系统内存不足被杀死的情况下。
    • 第一次拉活在5秒内,第二次在10秒内,第三次在20秒内。短时间内多次被杀死后不会进行拉活。

利用Native进程拉活

  • 利用Linux系统中Fork机制创建一个Native进程,在Native进程中监控主进程,一旦主进程挂掉及时重建。AMS机制来管理。
  • 如何监听:
    • 创建一个循环监听器。轮询耗性能。
    • 创建一个监控文件,在主进程中持有锁,Native进程对该文件的访问被阻塞,一旦成功获取到锁,则代表主进程被杀死,执行拉活。
  • 缺点:
    • Android 5.0 之后系统对Native进程加强了管理,所以Native拉活的方案是失效的。

利用JobScheduler机制拉活

  • Android 5.0 后新提供的一种方案。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值