Android进程保活方案

目的

进程保活是各个公司想要实现的一个功能,可以“无赖”地一直霸占你的手机,不被系统和第三方杀掉,以下是几种方案,供大家参考,具体实现还需自己完成。


基本思路

  • 提升进程优先级,防止被杀掉
  • 进程被杀掉之后进行拉活

进程优先级划分

1.前台进程
  • 用户正在交互的Activity
  • 当某个Service绑定正在交互的Activity
  • 被主动调用的前台Service(startForeground)
  • 组件正在执行生命周期的回调(onCreate/onStart/onDestroy)
  • BroadcastReceive正在执行onReceive()
2.可见进程
  • Activity处于onPause状态
3.服务进程
  • 通过startService启动的service
4.后台进程
  • Activity处于onStop状态
5.空进程
  • 不含有任何四大组件的进程

Android 进程回收策略

Android 中对于内存的回收,主要依靠 Lowmemorykiller 来完成,是一种根据 OOM_ADJ 阈值级别触发相应力度的内存回收的机制。

关于 OOM_ADJ 的说明如下:


image.png

其中红色部分代表比较容易被杀死的 Android 进程(OOM_ADJ>=4),绿色部分表示不容易被杀死的 Android 进程,其他表示非 Android 进程(纯 Linux 进程)。在 Lowmemorykiller 回收内存时会根据进程的级别优先杀死 OOM_ADJ 比较大的进程,对于优先级相同的进程则进一步受到进程所占内存和进程存活时间的影响。


进程保活方案

1.提升进程优先级
  • 监听手机的屏幕的解锁和锁屏事件,在手机锁屏时启动1像素的Activity,解锁时结束1像素的Activity
  • 通过startForeground()提升到前台进程
2.双进程守护
  • 开AB两个进程,互相监听,当A进程被杀死,B进程重新启动A进程
3.其他
  • 使用JobScheduler,将任务添加进系统调度队列
  • 将Service中onStartCommand的返回值设置为START_STICKY
  • 利用BroadcastRecelver,监听系统的广播或第三方应用发出的广播
  • 针对性的接入第三方推送,比如小米渠道下接入小米推送,华为渠道下接入华为推送,墙外App接入GCM
  • 利用账号同步机制,系统会定期唤醒账户更新服务
  • 通过各种手段加入手机系统的白名单

总结

现在手机对进程保活的问题做的越来越严格,所以有很多方法并不见效,本人也是不支持做项目的进程保活。试想如果每一个APP项目都进程保活,霸占你的手机内存,手机就会变得炒鸡卡,到头来难受的还是我们用户自己呀。

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

推荐阅读更多精彩内容

  • Android中的进程保活应该分为两个方面: 提高进程的优先级,减少被系统杀死的可能性 在进程已经被杀死的情况下,...
    sososeen09阅读 3,532评论 5 42
  • 转载一篇不错的文章,解决了我一下关于如何保留android进程的技术。 Android 进程保活 目前市面上的应用...
    小帝Ele阅读 1,037评论 0 6
  • 如何进行进程保活,首先我们应该先分析一下进程被杀死的原因开始 Android进程被杀死的场景分析: 从 Andro...
    如颖随行日记阅读 4,955评论 2 4
  • 如何进行进程保活,首先我们应该先分析一下进程被杀死的原因开始 Android进程被杀死的场景分析: 从 Andro...
    编程小猪阅读 3,600评论 1 14
  • 偶经一小径 草深且徐行 大路云中客 笑我白头翁 白头犹自得 斜月问三星 痴人不说梦 梦醒万事空
    飞狐119阅读 87评论 0 0