Android性能优化
启动优化
延迟加载,比如通过IdleHandler在系统空闲时加载模块
异步初始化
缺点:界面展示了,但是用户操控出现卡断
Android 性能优化 - 启动优化
How to Capture Heap Dump From an Android App
浏览 Systrace 报告
Dalvik 可执行文件格式
应用性能优化之VerifyClass
渲染性能优化
防止因视图层次结构导致性能下降包括两个目标:一个是实现视图层次结构扁平化,一个是减少 Double Taxation。布局耗时过长的一个常见原因是,View 对象的层次结构互相嵌套(层级过深)。每个嵌套的布局对象都会增加布局阶段的开销。层次结构越扁平,完成布局阶段所需的时间越少。
优化方案:
- 使用 ConstraintLayout 而非 RelativeLayout 或 LinearLayout,因为这么做通常更高效,并且减少了布局的嵌套。不过,对于可通过 FrameLayout 实现的简单布局,还是建议使用 FrameLayout;
- 如果使用 RelativeLayout 类,则可通过使用未设权重的嵌套 LinearLayout 视图,以更低的开销达到同样的效果。但是,如果您使用的是嵌套的加权 LinearLayout 视图,则布局开销会高得多,因为它需要多次布局传递;
- 使用 RecyclerView 而不要使用 ListView,因为前者可以回收各个列表项的布局,这种方式不仅效率更高,而且可以提升滚动性能。
- 布局中使用 <merge>来减少布局层次。
- 使用ViewStub延迟加载视图
- 降低透明度,比如一个字体颜色不要使用透明度的值,要使用RGB,而不是ARGB。
- 移除布局中不必要的背景
性能和视图层次结构
Jetpack Compose 性能
检查 GPU 渲染速度和过度绘制
Android技术质量 是谷歌官方介绍的性能检查和优化措施。
频繁GC:申请大量对象、图片内存占用
包体积优化
- so等做成插件
- Build > Analyze APK:使用 APK 分析器分析 build > 比较文件 可以用于了解为什么应用较之先前版本有所增大。
性能工具介绍
MethodTracing
通过MethodTracing
可以查看方法调用的耗时,但是method tracing会导致虚拟机运行比正常情况要慢,所以该方式只能查看相对耗时。
使用方法:
- 通过AndroidStudio的Profiler的CPU中可以抓取MethodTracing。
- 也可以通过代码方式抓取,比如通过下面方式可以分析activity启动耗时:
1 | //启动trace日志,比如在点击按键,启动一个Activity之前调用 |
trace文件导出后,使用AndroidStudio的Profile打开即可查看。
相关接口说明:
代码检查:Lint > Performance
AndroidStudio: Code > Inspect Code 可以启动lint检查,检查示意图:
参考资料
Android技术质量 是谷歌官方介绍的性能检查和优化措施。
Awesome-Android-Performance
Android 性能优化 - 启动优化
How to Capture Heap Dump From an Android App
浏览 Systrace 报告
Dalvik 可执行文件格式
应用性能优化之VerifyClass
FAQ
- Android Studio-Profiler连接失败,“no supported devices”,可以使用
adb root
来获取root权限,这样就可以解决连接不上的问题。