您的位置:首页 > 移动开发 > Android开发

Android 性能优化的一些方法

2013-11-14 20:53 148 查看
  1. 采用硬件加速,在androidmanifest.xml中application添加 android:hardwareAccelerated="true"。不过这个需要在android 3.0才可以使用。

  2. View中设置缓存属性.setDrawingCache为true.

  3. 优化你的布局。通过Android sdk中tools目录下的layoutopt 命令查看你的布局是否需要优化。

  4. 动态加载View. 采用ViewStub 避免一些不经常的视图长期握住引用.

  5. 将Acitivity 中的Window 的背景图设置为空。getWindow().setBackgroundDrawable(null);android的默认背景是不是为空。

  6. 采用 优化布局层数。 采用来共享布局。

  7. 查看Heap 的大小

  8. 利用TraceView查看跟踪函数调用。有的放矢的优化。

布局优化

(原文参考:ImprovingLayout Performance

尽量减少Android程序布局中View的层次,View层次越多,效率就越低

使用<include/>复用布局
使用ViewStub懒加载布局 (TODO:Android布局技巧:使用ViewStub提高UI性能)
使用ViewHolder、Thread使ListView滚动更加流畅

其它优化点

合理使用异步操作

懒加载:当前不需要的数据,不要加载,即按需加载。懒加载的范围是广泛的,可以是数据,可以是View,或者其它

使用缓存

图片缓存:包括MemoryCache和DiskCache,推荐使用官方DEMO中的Cache

参考:DisplayingBitmaps Efficiently

单例数据缓存:建立一个管理数据的类,管理所有数据,当主界面消失后,由于Application本身没有实际退出,因此,数据本身也没有释放掉,下次启动时,省去了加载数据的时间,当然,这并不是一个好的行为。

使用ListView、GridView的View缓存

使用Message自身的缓存,避免重复创建Message实例

线程池

数据池(可参考Message Pool的实现方式)

……

数据库优化

SQL优化
建立索引
使用事务
…...

算法优化

用快速排序代替冒泡排序
用二分查找代替线性查找

……

数据结构使用

不要全部使用ArrayList,合理使用LinkedList等易于插入和删除的集合

合理使用HashMap、HashSet来提高查找性能
使用SparseArray、SparseIntArray、SparseBooleanArray来替代某些特定的HashMap

……

其它策略

可以考虑延迟处理,避免在同一时间干过多的事情

应用程序内部的性能优化

该部分的优化应该是依据程序的不同而不同,没有万般皆准的法则,目前从我做过的程序来看,实际上,上述的性能优化点基本上已经能够解决很多性能问题了。

在我所做的程序中,主要的优化手段是:

程序逻辑简化:分析代码,去掉冗余逻辑

数据结构的优化:对集合类的灵活使用,特别是HashMap的使用,极大的提高查找性能。

批量处理原则:对于需要循环调用地方,采用批量处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: