进程保活

Android 进程的 优先级

  • 前台进程
    正在和用户交互 的act,前台运行的service,广播接受者的 onRecive 方法也是属于前台进程
  • 可见进程
    没有任何前台组件,但还是会影响用户屏幕上所见内容
  • 服务进程
    就是service,优先级比较高, 所以经常要注意service
  • 后台进程
  • 空 进程
    就是为了一个平衡,缓冲

Android 进程的回收策略

1 Low memory killer,其实是根据 Linux 的 oom 机制改过来的,oom 的比较复杂的平衡机制,会对进程的优先级进行打分,然后将分数高的进程视为bad 进程,杀死它,并释放内存。

而不同的是,oom 是在内存不足的时候采取检查,而 low memory killer 是 定时去检查

  1. OOM_ODJ 判别进程的优先级。

进程保活方案

利用系统广播拉活

在发生系统事件的时候,系统会发出相应的广播,我们可以注册这个广播监听器,比如 开机啊,文件的卸载啊
不好 知道这个监听

利用系统 Service 机制拉活

service 中有个onstartcommand 方法,把返回值 设为 start stikey,他以为因为内寸不足被系统杀掉后,在内存足的时候,系统会尝试创建这个 service。
第一次 10秒,第二次 20 秒。超过 三次,不再拉活

root 后还是可以直接杀掉的

利用Native 进程拉活

主要用的Linux 中的fork 机制创建一个 native 进程,而这个native 进程去监控主进程的存活,当主进程挂掉之后,由于native 进程活着,可以去拉活。
用的Android 的 ActivityMangerSerive 来管理。
5.0 之后 又被限制了

如何监听呢? 可以轮询 死循环 监听
可以去访问某个主进程文件 的锁,如果获得了锁,说明 主进程挂了。
如何拉活,AM 命令

利用JobScheduler 机制拉活。

上个 5.0 之后 限制了,但是提供了这个,可以想办法

利用账号同步机制拉活

会定期同步账号,利用这个机制,但是 好像也不生效了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如何进行进程保活,首先我们应该先分析一下进程被杀死的原因开始 Android进程被杀死的场景分析: 从 Andro...
    如颖随行日记阅读 4,985评论 2 4
  • 如何进行进程保活,首先我们应该先分析一下进程被杀死的原因开始 Android进程被杀死的场景分析: 从 Andro...
    编程小猪阅读 3,637评论 1 14
  • 转载一篇不错的文章,解决了我一下关于如何保留android进程的技术。 Android 进程保活 目前市面上的应用...
    小帝Ele阅读 1,044评论 0 6
  • 作者:腾讯——张兴华目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题。本文对 And...
    yoosir阅读 1,015评论 0 4
  • 文/陌宇轩 (黑龙江) 这树是我见过的 最温和的树种 不敢将其妄为 扭曲成像 在伟大的目标面前 我没有了说辞 仁爱...
    小哲小诗阅读 179评论 0 0