布局优化
布局标签的使用
include
通过include将共同的布局模块化,实现布局复用
merge
merge会自动优化多余的视图,多用于替换frameLayout或者当一个布局包含另一个布局的时候。
当把有<merge>
标签的布局放在<include>
中的时候,就会忽视<merge>
viewstub
viewstub常用来引入那些默认不会显示,只在特殊情况下显示的布局,如进度布局、网络失败显示的刷新布局、信息出错出现的提示布局等。
其他
- 用SurfaceView或TextureView代替普通View
- 使用OpenGL绘图
- 尽量为所有分辨率创建资源
- hierarchy viewer布局调优
代码优化
降低执行时间
缓存
- 线程池
- 图片缓存:内存、磁盘
- handler消息复用
- Http的Cache-Control
- IO缓存:BufferedInputStream替代InputStream,BufferedReader替代Reader,BufferedReader替代BufferedInputStream.对文件、网络IO皆适用。
数据选择
- String、StringBuilder、StringBuffer
- SoftReference、WeakReference
- final类型存储在常量区中读取效率更高
- 应用内广播LocalBroadcastManager 高效、安全
- ArrayList和LinkedList,HashMap和LinkedHashMap、Set
- 使用自带的SpareArray和ArrayMap 替换HashMap
提高执行效率
- 多线程
- 延迟操作 postDelay
网络优化
- 所有http请求必须添加httptimeout
- gzip压缩 请求合并