im即时通讯开发:Android6.0及以上的保活之被杀复活

本文探讨了Android 6.0及以上版本中,即时通讯应用如何在被系统或第三方软件杀死后复活。介绍了JobScheduler的工作原理和在不同Android版本的效果,以及Doze模式对应用的影响。同时,详细解析了华为推送SDK如何实现APP复活,强调了透传消息在保活策略中的作用,并指出部分华为手机可能需要开启自启动权限和安装特定服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着AlarmManager唤醒、native进程拉起等方式的失效,APP常驻内存的时代将不复存在,尤其是当APP进程被杀死后,基本很难将其复活拉起。从用户的角度来讲,这是一种很好的发展,而这一切应该归功于谷歌和各大厂商不断追求良好的用户体验;从开发者的角度来说,尤其是即时通信类应用(如移动端IM、消息推送服务等),这将是毁灭性打击。如果用户使用你的聊天软件,但在使用过程中总是不能及时收到对方的消息,那将是一种什么样的体验,因此,厂商"白名单"便应运而生了。正是因为如此,本文探讨的相关方案不可能保证在任何时候,或者任何机型能够唤醒,一切都是相对存在的。

我们先了解下哪些情况下进程会被杀死:

1)LowMemoryKiller:这种情况是触发了系统进程管理机制,通过系统会参照当前系统资源情况和oom_adj值来回收进程,oom_adj越大,越容易被杀死;

2)第三方清理软件:杀死oom_adj值大于4的进程,如果拥有root权限,理论可杀死所有进程;

3)厂商杀进程:可杀所有进程;

4)Force-stop:可杀所有非系统进程。

使用JobScheduler

JobScheduler是谷歌在Android 5.0引入的一个能够执行某项任务的API,它允许APP在将来达到一定条件时执行指定的任务。通常情况下,即使APP被强制停止,预定的任务仍然会被执行。

JobScheduler工作原理:

首先在一个实现了JobService的子类的onStartJob方法中执行这项任务,使用JobInfo的Builder方法来设定条件并和实现了JobService的子类的组件名绑定,然后调用系统服务JobScheduler的schedule方法。这样,即便在执行任务之前应用程序进程被杀,也不会导致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值