1、布局优化
(1)使用优先顺序:LinearLayout,FrameLayout > RelativeLayout > 嵌套;
(2)使用onDraw()方法可能会频繁使用,避免在这个方法中创建新的局部对象和执行耗时操作,
由于可能频繁调用onDraw(),就会频繁出发GC,降低效率。
2、内存泄漏
(1)在该释放对象的时候释放(动态注册广播、数据库操作)
(2)静态变量,生命周期从类加载到销毁
(3)单例模式,生命周期和Application一样
(4)属性动画,动画无限循环执行,在onDestroy()是没有停止,Activity和View相互持有,Activity无法释放。
3、ANR
(1)主线程避免耗时操作,如有耗时操作,开子线程进行
4、ListView
(1)contentView复用View
(2)使用ViewHolder
(3)避免在getView()中有太多耗时操作或者创建局部对象,滑动较快时避免大量异步操作
5、线程优化
(1)开大量线程时使用线程池,线程池可以重复使用内部的线程,避免线程创建销毁带来的性能开销
6、图片相关
(1)使用弱引用、软引用缓存。弱引用拥有更短暂的生命周期,一旦发现有弱引用的,就回收,不管内存足够与否。软引用只有当内存空间不足的时候才会回收。
(2)图片压缩
7、其它
(1)尽量创建局部变量,避免全局变量。
(2)for循环也要避免创建对象。