android推送保活实验到结论

尝试记录

(以极光推送为例)

1.机型:Nexus 系统:6.0

操作:从后台应用列表划除应用
结果:只干掉了UI进程,remote进程没有干掉。
所以推送服务正常运作。
重启手机,推送服务正常运作。
判断是,由于能够捕获到开机监听,其他带有极光SDK的应用做了开机自启动,然后极光SDK再互相启动手机里所有带有极光SDK的服务。
于是自己的应用即使没有做开机自启动推送服务,推送服务也可以正常运作。极光SDK互相拉起。

2.机型:小米 MI 4LTE 系统:6.0.1

操作:从后台应用列表划除应用
结果:UI进程,remote进程都被干掉了,所有包名下的服务都被干掉,包括前台服务。干干净净。
开机监听无法检测到。
微信那些主流APP已经在小米白名单里,跟系统进程一样开机就存在了。

3.机型:OPPO A33 系统:5.1.1

操作:从后台应用列表划除应用
结果:UI进程,remote进程都被干掉了,所有包名下的服务都被干掉,包括前台服务。干干净净。
开机监听无法检测到。
微信那些主流APP已经在小米白名单里,跟系统进程一样开机就存在了。

判断结果:

1.上述试验告诉我们什么?

除非能像微信、QQ等大牌应用获取厂商支持,默认添加进白名单,否则其他应用在用户主动杀死应用后(在后台应用列表中,滑动删除应用),都无法存活,包括推送子进程。
当然,像NEXUS,LG,索尼这类不是本土品牌的手机,则可以存活,原因是本土厂商对手机系统做了严格的限制。你懂的,本土应用太过流氓,后台服务,互相保活,开机唤醒等各种骚操作使得手机性能急剧下降,为了提高用户体验,让手机更具性价比,而为之。

2.应用保活指的是什么?

在用户没有主动杀死应用的情况下,提高进程的优先级,让应用不被系统主动回收。进程参数oom_score_adj(oom_adj)标记了进程优先级,数字越小优先级越高,越难被系统回收。
前台进程>可见进程>服务进程>后台进程>空进程
如何提高进程优先级可自行google

3.那究竟如何让推送保活?在用户不打开应用的时候就能接受到推送?

使用厂商自家的推送服务。
也就是说,你要支持华为用户,那么就接入华为推送;你要支持小米用户,那么就接入小米推送。
信鸽推送可以减少接入多个厂商的工作量,可以了解其SDK文档。(截止目前,信鸽支持的第三方厂商,有华为、小米、魅族;OPPO刚出了自家的推送服务,信鸽还没有;VIVO压根没有自家的推送服务)

你可能感兴趣的:(android推送保活实验到结论)