安卓开发博客

Android性能优化实战总结

2018-06-12  本文已影响8人  PaulLuv

1. 写在前面

1.1 性能优化的工具

1.2 优化的一些点

1.2.1 布局优化

1.2.2 加载优化

1.2.3 内存优化

1.2.4 内存泄露优化

2. 卡顿优化

2.1 卡顿的场景

卡顿的场景可以从UI(绘制、刷新)启动速度(冷热启动)跳转(页面间,前后台)响应(按键、系统事件、滑动)四个方面去分类,主要原因还是以下两种:

2.2 启动速度

启动速度的话,可以使用adb命令查看启动时间。

// 测试Activity启动时间,如MainActivity,APP启动时间
adb shell am start -W packagename/activity

冷启动黑白屏问题,可以通过设置theme设置background来解决;冷启动与热启动速度问题,需要优化UI线程的处理逻辑。

2.3 稳定性优化

  1. 采用TDD开发模式,提高单元测试覆盖率,方法的测试覆盖率。
  2. 使用Android Lint等静态工具,提高程序的稳定性。
  3. 使用Monkey测试等工具,减少隐藏的闪退。
adb shell monkey -p com.your.packagename -v 10000
  1. 使用bugly等Crash监控上传工具,便于持续提升程序的稳定性。

3. APK瘦身

1. 开启shrinkResources去除无用资源

android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
        }
    }
}

shrinkResources依赖于minifyEnabled,就是打开shrinkResources也必须打开minifyEnabled。

2. 借助Android Lint删除未使用的资源代码

Analyze -> Run Inspection by Name -> unused resources -> Moudule ‘app’ -> OK
Analyze -> Run Inspection by Name -> unused declaration -> Moudule ‘app’ -> OK

3. 压缩图片或使用webp格式图片
使用pngquant优化png图片的大小

// pngopt.sh
#! /bin/bash 
set -eux
find . -name '*.png' -print0 | xargs -0 -P8 -L1 pngquant --ext .png --force 256

4. 使用插件化
插件化可以将APK的体积减小,在用户需要使用到相关模块后,再从服务器进行下载。

5. 向量图优化(去除向量图小数点)
使用\.\d+去除向量图中的小数点,可以编写一个python脚本全局执行,代码较多,我这里就不展示了。

4. 省电流量优化

  1. 使用Battery Historian 系统电量分析工具,分析耗电过程,优化APP耗电。
    一般耗电的场景有:
    • 计算优化,减少或避开浮点运算等。
    • 避免wakelock的使用不当,屏幕唤醒是耗电最厉害的,特别注意。
    • 使用Job Scheduler。
  2. 使用GPS定位耗电,但定位进准,如果要求不那么进准的话,可以使用wifi/移动网络进行定位。
  3. 网络差的情况下,减少一些比不要的请求加载,如加载一张大图等,另没有wifi/蓝牙可连的情况下,尽量关闭。
  4. 流量优化的话,只能说尽量减少不必要的请求了,减少下载,比如使用缓存。

总结:其实一定程度上,严格按照代码规范来执行,很大程度上就能避免很多问题,上面的这些性能优化措施,只能是后面出现问题的解决方案,重要的是我们要去学会编写高质量的代码,从而避免这些问题的出现。

更多参考

上一篇 下一篇

猜你喜欢

热点阅读