一、布局优化
????????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、尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄露。