Android进程保活实践(下篇)

原文转载自: https://www.jianshu.com/p/7cdae4f7763a

前言

之前写过一篇android进程保活实践(https://www.jianshu.com/p/53c4d8303e19),文章中提到的保活方法其实很早前别人都总结过,而我写那篇文章的本意,其实更多是总结一种进程保活的思路,比如文中提到的进程优先级oom_adj的概念,进程被kill的3种场景,国产手机的现状等。

后来收到不少留言评论,大多数都是讲这个进程保活对很多手机没有作用。我一直没有回复,因为我们项目在使用这个进程保活策略时,同时也加入了进程存活时间的Log记录机制,目的就是想看下有效果没。后台service的启动就开启计时器,以分钟为单位不停写入SharePreference,进程被kill这个值就是存活时间(min),同时记录机型,Android版本等信息,以Exception的格式封装上传到bugly。由于是纯手动分析数据很麻烦,最后取了1000条数据涵盖了Android5.0-Android8.0,小米,华为,三星,oppo/vivo,金立等各种机型。

结论

  1. 和Android版本关系很大
    对于Android6.0以及以下的大部分机型还是有效果的,但是Android7.0和Android8.0基本上所有机型全部阵亡,大部分后台进程在锁屏后无法存活超过20分钟。
    这个可以从Android 6.0,7.0和8.0的新特性看出一些端倪,google对于内存/电量使用越来越严格。

  2. 和手机厂商关系比较大,测试结果显示,oppo/vivo这两家厂商进程保活最困难,小米和三星比较宽松。其他的机型居中。

  3. 综合结果是,鉴于目前国内大部分手机基本都到7.0了,进程保活暂时可以说是宣告失败了。除了加入厂商白名单之外我不认为有真正可行的方案,毕竟google近几个Android版本不停在系统层面限制,我们在app层没有很大的发挥空间,so,之前的方案只能作为一个优化策略吧。

猜你喜欢

转载自blog.csdn.net/tgvincent/article/details/80894032