性能优化性能优化Android 面试

Android性能优化大集结

2019-06-05  本文已影响94人  龚十一

本篇文章是经过多篇博文参考和学习下记录的,仅供参考学习用,如有侵权或异议,请联系我修改。

一、App启动速度优化

1.1 Google 加速方案

1.2 通用加速方案:

1.3 启动方式:

当启动应用时,后台没有该应用的进程(常见如:进程被杀、首次启动等),这时系统会重新创建一个新的进程分配给该应用

当启动应用时,后台已有该应用的进程(常见如:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用

相比暖启动,热启动时应用做的工作更少,启动时间更短。热启动产生的场景很多,常见如:用户使用返回键退出应用,然后马上又重新启动应用

热启动和暖启动因为会从已有的进程中来启动,不会再创建和初始化Application

平时我们讨论中基本都会将暖启动和热启动合在一起统称为热启动,因为暖启动与热启动差异很小,如果不是特别留意启动流程,那么在用户体验和感官上没有直接差异,但是在framework层执行时是有一定差异的。本次优化点也是围绕冷启动和热启动来做,将暖启动与热启动统称为热启动
另外有一点,从绝对时间上来看,app安装后的首次启动将会最耗时,因为首次启动会新建数据库,sp文件,各种缓存,配置等

白屏/黑屏问题

点击你app那一刻到系统调用Activity.onCreate()之间的时间段。在这个时间段内,WindowManager会先加载app主题样式中的windowBackground作为app的预览元素,然后再真正去加载activity的layout布局

这点在配置较好,内存空间充足的手机上不是很明显,但低端手机或者内存吃紧的情况下依旧会出现”闪屏”效果,持续时间很短,一闪而过。

博客地址:https://github.com/DanluTeam

二、布局优化方案

2.1 通用布局优化方案

相关工具:

(1)、打开Show GPU Overrdraw的选项:设置 -> 开发者选项 -> 调试GPU过度绘制 -> 显示GPU过度绘制;

(2)、Hierarchy Viewer

博客:http://blog.csdn.net/lmj623565791/article/details/45556391/

http://www.trinea.cn/android/layout-performance/

2.2 检测应用在UI线程的卡顿

开源地址

https://github.com/markzhai/AndroidPerformanceMonitor[方式1]

https://github.com/wasabeef/Takt[方式2]

https://github.com/friendlyrobotnyc/TinyDancer [方式2]

三、内存优化方案

3.1 通用方案

博客:http://blog.csdn.net/guolin_blog/article/details/42238627

3.2 Android开发常见的内存泄漏

博客:https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650822597&idx=1&sn=462b116f97623f239ecf667d3bdef446&chksm=80b7835bb7c00a4d4cbc9f7e19829d9a99f3cf58c1bc43dace16ffec58c98668927c9fa8dcda&scene=21#wechat_redirect

四、APK瘦身

4.1 通用方案

检测应用情况工具:https://nimbledroid.com/

博客:1.https://www.jianshu.com/p/8f14679809b3# 2.http://t.cn/RGjNpam

Android性能全分析博客:https://mp.weixin.qq.com/s/QVOYF2nfoWMCbM5YsxQgRQ

上一篇下一篇

猜你喜欢

热点阅读