一、布局优化
1、尽量减少布局文件的层级。
2、删除布局中无用的控件和层级、
3、有选择的使用性能较低的ViewGroup。
4、采用<include>标签、<merge>标签和ViewStub(下一篇文章会讲到三者如何使用)。
二、绘制优化
1、在onDraw()方法中不要创建新的布局对象。
2、在onDraw()方法中不要做耗时任务,也不能执行成千上万的循环操作。
三、内存泄漏优化
1、静态变量导致的内存泄露。
2、单例模式导致的内存泄露。
3、属性动画导致的内存泄露。
四、响应速度优化
1、避免在主线程中做耗时操作
五、ListView 和 Bitmap等优化
1、listview优化主要分为三个方面:首先采用ViewHolder并避免在getView中执行耗时操作;其次要根据列表的滑动状态来控制任务的执行频率;最后可以尝试开启硬件加速来listview的滑动更加流畅。
2、Bitmap的优化主要是通过BitmaoFactory.Options来根据需要对图片进行采样。
3、对于GridView来说,listview的优化策略完全适用。
六、线程优化
线程优化的思想是采用线程池,避免程序中存在大量的Thread,线程池可以重用内部 的线程,从而避免了线程的创建和销毁所带来的性能开销,同时线程池还能有效地控制线程池的最大并发数,避免大量的线程因互相抢占系统资源从而导致阻塞现象的发生。
七、一些性能优化建议
1、避免创建过多的对象。
2、不要过多使用枚举,枚举占用的内存空间要比整型大。
3、常量请使用 static final 来修饰。
4、使用一些ANDROID 特有的数据结构,比如 SparseArray 和 Pair 等,它们都具有更好的性能。
5、适当使用软应用和弱应用。
6、采用内存缓存和磁盘缓存。
7、尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄露。
网友评论