1-布局优化
尽量减少布局的层级
删除布局中的无用控件和层级 使用性能较低的ViewGroup、
<include>,<merge>标签
ViewStub提供按需加载功能;
2-绘制优化
onDraw 方法避免大量的操作
3-内存泄漏优化
避免写内存泄漏的代码,使用内存分析工具找出潜在的内存泄漏继而解决;
1.静态变量导致的内存泄漏
2.单例模式导致的内存泄漏
3.属性动画导致的内存泄漏
4-响应速度优化
核心思想避免在主线程中做耗时的操作
发送ANR异常后 系统会在/data/anr目录下创建一个traces.txt文件 分析文件找出原因;
5-ListView的优化
1.采用ViewHolder避免在getView方法中执行耗时的操作;
2.根据列表的滑动状态来控制任务的执行频率;
3.开启硬件加速
6-Bitmap的优化
BitmapFactory.Options对图片进行采样;
7-线程优化
采用线程池避免程序中有大量的Thread
8-其他优化方式
避免创建过多的对象;
不要过多的使用枚举;
常量使用 static final 修饰;
采用双缓存机制
适当使用软引用 弱引用
尽量采用静态内部类
———————————————————————————————————————————————————————————————————-
一、减少Reduce
差异化对待缓存容量
差异化对待图片资源
资源按需加载
减少bitmap对象的内存占用
inSampleSize
decodeformat (ARGB_8888,ARGB,ARGB_4444,A_LPHA_8);
二、重用Reuse
Bitmap对象的复用inBitmap
ListView,GridView中convertView的复用
避免频繁的创建和回收对象
三、回收利用再循环。Recycle
Activity泄漏内部类static,singleton,
容器对象的泄漏
选择适合的context,
注意生命周期内对象的注销。
大胖子bitmap对象的回收
大胖子webview对象的回收
大胖子cursor对象的回收
onTrimMemory
onLowMemory
四、重构Refactor
使用优化过的数据结构
减少内存的碎片化
优化布局减少内存消耗
———