一、布局优化
1 延迟布局或空间的加载时间。根据业务逻辑,需要时再加载空间或布局。
2 尽量减少布局嵌套的层次和子空间数量
3 ListView从Adapter中获取convertView时,尽量将convertView的子View缓存起来,总比重新加载快。
二、数据库操作
1 如果是批量的操作,请使用事务,不要为每一个操作执行一次事务。操作成功,则将事务setSuccessful();反之,不需设置事务成功,事务结束时会自动回滚。
2 查询注意限定索取字段、查询条件,尽可能缩小范围。
3 使用Cursor获取数据时,尽量使用字段索引值,而不是先获取字段的索引值,再使用该索引值取数据。
三、异步任务:将费时操作尽可能的挪到异步线程中,通过和主线程交互的方式来刷新UI。
以下是Google官方文档的Tips。
首先,性能优化应该主要追求于数据结构和算法上的优化。
小细节:
1、永远避免创建不必要的对象!多个类型组合的对象比原始类型之和还要耗费更多内存,封装类型同样比基本类型性能更低。
2、访问static的字段将比非static字段快15~20%
3、如果是常量,请使用static final声明。
4、避免在类内部使用Getter和Setter。
5、遍历数组和链表,尽量使用foreach替代for
6、如果仅仅为了实现私有访问,而使用了私有内部类,请考虑改成使用包来屏蔽访问权限。
7、尽量避免使用浮点数,Android没有浮点数计算器,都是通过软件实现的。
8、尽可能的使用系统API,如 System.arraycopy()操作数组拷贝比自己做的好。
9、JNI不是总能提升性能,接口调用同样需要降低性能,如果不必要,请慎重考虑。
10、请注意2.2之前的系统版本没有引入JIT,注意这些机器上的性能表现。(2.2之前的设备份额已经不足1%了)。
11、时刻注意权衡,上述的这些细节不是万能的,有它自己适用的范围,请注意权衡。优化性能时,注意权衡各方面因素。