---------
1.RelativeLayout会让子View调用2次onMeasure,LinearLayout 在有weight时,也会调用子View2次onMeasure
2.RelativeLayout的子View如果高度和RelativeLayout不同,则会引发效率问题,当子View很复杂时,这个问题会更加严重。如果可以,尽量使用padding代替margin。
3.在不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。
作者:brucevanfdm
链接:https://www.jianshu.com/p/d874501fe771
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
文章记录:
实战 Android中的UI过度绘制
https://www.jianshu.com/p/9e095bacf44a
性能优化工具(六)-Layout Inspector
Android FPS流畅度测试
https://www.jianshu.com/p/1fe9783d266b
Android App性能评测分析-流畅度篇
https://www.jianshu.com/p/642f47989c7c
layer-list overdraw 问题
https://slothdevelopers.wordpress.com/2014/05/21/underlining-views-with-custom-shapes-overdraw-performance/
Layer-list 的基本使用介绍
https://blog.csdn.net/android_cmos/article/details/80033784
写出高效清晰Layout布局文件的一些技巧
Style在Android中的继承关系
- "."继承关系和parent继承关系同时存在时,只有parent有效
卡顿优化
- 避免使用enum;
- 用ArrayMap SpareArray 替换HashMap
Android App优化之消除卡顿
内存优化
- String 连接改为StringBuilder(线程不安全)或者StringBuffer,尤其是for循环,或者其他调用频次很高的方法中。即使是Log.d中使用了+作连接,虽然LogCat中不展示,但是String的+已经调用过,String已经new过。
- 读写文件时的buffer大小设置,微信Matrix可以检测
String 拼接的方法选择
- 在拼接静态字符串时,尽量用 +,因为通常编译器会对此做优化,如:
String test = "this " + "is " + "a " + "test " + "string"
编译器会把它视为:
String test = "this is a test string"- 在拼接动态字符串时,尽量用 StringBuffer 或 StringBuilder的 append,这样可以减少构造过多的临时 String 对象。
Android Studio 检测
Anaylze --> Inspection Code
image.png
参考文献
Android 性能优化之String篇
Java 性能优化之 String 篇
Java 字符串拼接效率分析及最佳实践
使用 Memory Profiler 查看 Java 堆和内存分配
AndroidStudio3.0 Android Profiler分析器(cpu memory network 分析器)
java – 如何确定使用FileInputStream时的理想缓冲区大小?
How do you decide what byte[] size to use for InputStream.read()?
我这样减少了26.5M Java内存!
Android 代码内存优化建议-Android 资源篇
循环 ViewPager 的两种实现方法
网友评论