前言
由于所有的android App都运行在Dalvik虚拟机上,而虚拟机只为每个应用程序分配16M或者24M的运行内存。所以我们所写的App需要对内存的分配极为苛刻。
优化分类:
1、代码层次问题:
1.1、对象的引用没有释放。例如:一些不需要的普通对象;一些集合中的对象。
1.2、注册类对象没有反注册。例如:监听手机来信、开机动态广播。
1.3、资源对象没关闭造。例如:File、Cursor。需要先关闭,再设为null
1.4、不良代码造成的内存压力。Bitmap应该调用recycle(),在设为Null。同时在回收bitmap时捕获异常应该是OutofMemoryError是一种Error,而不是Exception。
1.5、子线程带有activity的引用,未被及时回收。可以将线程的内部类设为静态内部类,在线程内部采用弱引用context
1.6、bitmap的不合理使用。我们应该利用bitmap的options属性根据屏幕尺寸或自定义尺寸进行缩放。
2、布局文件:
2.1、减少UI层级 使用Hierarchy Viewer检测
2.2、尽量用relativeLayout代替linearLyaout
3、优化检测工具
DDMs查看内存使用情况
Traceview检测代码的执行效率