本文共 1191 字,大约阅读时间需要 3 分钟。
核心思想:减少布局的层级
优化方式:
多嵌套情况可以使用RelativeLayout减少嵌套。
布局层级相同情况下优先使用LinearLayout,比RelativeLayout高效。
使用<include>
增加布局复用,<merge>
减少布局层级,<ViewStub>
懒加载。
核心思想:避免在View.onDraw()
执行大量操作
优化方式:
onDraw()
可能被多次调用产生大量的临时对象,导致占用过多的内存、系统频繁gc,降低执行效率。内存泄露:程序在申请内存后,无法释放内存,产生的垃圾内存
内存溢出(OOM):是指内存申请的内存超过系统指定的内存,内存泄露过多也会导致内存溢出
优化方式:
静态变量导致的内存泄露:
context.getApplicationContext()
单例模式导致内存泄露:
context.getApplicationContext()
属性动画导致内存泄露:
onDestroy()
中停止属性动画,导致View持有了ActivityonDestroy()
中停止动画Handler导致内存泄露:
线程导致的内存泄露:
详情:AsyncTask/Runnable以匿名内部类的方式存在,会隐式持有对所在Activity的引用。
解决:使用静态内部类,线程内使用弱引用
资源未关闭导致内存泄露:
ListView中Adapter导致的内存泄露:
getView()
导致每次都需要重新初始化Item转载地址:http://zzhxz.baihongyu.com/