Android进程保活方案

本文详细介绍了Android进程的生命周期和回收策略,探讨了如何通过提高进程优先级和被kill后拉活来实现进程保活。重点讲解了利用Activity、Notification、系统广播和Service等方式提高进程存活率,并讨论了各种保活方案的实践与限制。
摘要由CSDN通过智能技术生成


Android 系统为了保持系统运行流畅,在内存吃紧的情况下,会将一些进程 kill,以释放一部分内存。然而,对于一些(如:IM-QQ 、微信,支付-支付宝等)比较重要、我们希望能及时收到消息的 APP ,需要保持进程持续活跃,那么就需要实施一些保活措施来保证进程能够持续存活,即Android 进程保活

Android 进程保活,一般从两个方面进行:

  • 运行中保活:提高进程优先级,降低被系统 kill 的概率
  • 被 kill 后拉活:被系统 kill 后,将进程拉活(重启)

在此之前,我们先来了解下 Android 进程的一些相关概念。

进程

默认情况下,同一 APP 的所有组件均运行在相同的进程中,但是也可以根据需要,通过在清单文件中配置来控制某些组件的所属进程。

内存不足的情况下,Android 系统会选择 kill 某一进程来释放该进程占用的内存,供其它为用户提供更为紧急服务的进程使用。在被关闭的进程中运行的组件也会随着进程的关闭而销毁。

决定 kill 哪个进程时,Android 系统将权衡所有进程对用户的相对重要程度。例如:相对于托管可见 Activity 的进程而言,更有可能 kill 托管不可见 Activity 的进程。因此,是否终止 kill 某个进程取决于该进程中所运行组件的状态。

Android 进程的生命周期

Android 系统会尽量长时间地保持 APP 进程的运行,但为了新建进程或者运行更重要的进程,最终要 kill 旧进程来回收内存。为了确定保留或者 kill 哪些进程,系统会根据进程中正在运行组件的状态,将每个进程放入重要性层次结构中,必要时,系统会首先kill重要性最低的进程,其次kill重要性略低的进程,以此类推。

重要性层次结构一共有5级。以下列表按照重要程度列出了各类进程(第一类进程最重要,将是最后一类被终止的进程):

1. 前台进程

 用户当前操作的进程。一个进程满足以下任一条件 ,即视为前台进程:

  • 托管用户正在交互的 Activity(已调用 onResume() 方法)。
  • 托管某个 Service ,且 Service 绑定到用户正在交互的 Activity。
  • 托管正在“前台”运行的 Service(服务已调用startForeground())。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值