1. 布局优化
A. <include/>标签的使用
B. <ViewStub>实现view的延迟加载
View inflateView = mViewStub.inflate();
TextView text = (TextView)inflateView.findViewbyId(R.id.tv_text);
C. 常用的检查工具(开发者选项中, sdk tools hierarchyviewer.bat )
2. 内存优化
A. 使用适当分辨率和大小的图片(屏幕适配利用)
B. bitmap及时recycle(File,Cursor,Receiver,Sensor等也需要及时回收)
C. LruCache和DiskLruCache的使用
D. 代码优化
变量使用适当的修饰符
尽量不使用枚举,少用迭代器
使用RenderScript,OpenGL来进行复杂的绘图操作
E. 常用的检测工具(Lint, Memeory Monitor,TraceView,Emmagee,leakcanary)
TraceView分为:显示方法执行的时间的时间轴区域和显示详细信息的profile区域。 incl CPU time某方法占用CPU时间, Calls+RecurCalls调用次数加递归回调的时间,如果占用时间长且Calls+RecurCalls次数少,说明存在问题
##更新总结
_**UI性能分析**
_**内存性能优化**
UI卡顿原因
1. UI线程做耗时操作,ANR
2. 布局太过复杂,overdraw严重
UI卡顿相关分析解决办法
1. 使用HierarchyViewer, 和手机中GPU过度绘制查看相应布局
2. 用AS Lint工具优化布局代码
3. 使用traceview和systrace 分析内存消耗和耗用时间
内存性能优化
1. 布局优化:多使用include,merge,viewstub, 多使用style.xm,string.xml等资源共用
2.内存优化:
A:使用比较好的新的框架替换老框架(如请求框架,数据解析,图片加载框架等),使用新控件替换老控件(如recyclerview)
B:代码优化(注意定规范):尽量高聚低耦, 不要乱声明变量,注意使用DB,Stream,Bitmap等注意关闭或释放,
使用Stringbuffer,少用循环套循环,多用多线程等等, 可以使用Lint分析,注意这些细节在于慢慢积累。
C: 电量优化监听当前电量状态和是否充电中,合理的利用这些状态执行或避免耗电操作。