天天看点

Android性能优化一些方法

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查看跟踪函数调用。有的放矢的优化。

9.cursor 的使用。不过要注意管理好cursor,不要每次打开关闭cursor。因为打开关闭Cursor非常耗时。Cursor.require用于刷新cursor。

10.采用环形Buffer(可以采用链表数据结构实现)。可以设置一个链表长度的上限,根据手势的变化来不断地更新环形Buffer的内容。

11.采用SurfaceView在子线程刷新UI, 避免手势的处理和绘制在同一UI线程(普通View都这样做)。

12.采用JNI,将耗时间的处理放到c/c++层来处理。

13.有些能用文件操作的,尽量采用文件操作,文件操作的速度比数据库的操作要快10倍左右。

14.懒加载和缓存机制。访问网络的耗时操作启动一个新线程来做,而不要再UI线程来做。

15.消息缓存通过handler.obtainMessage复用之前的message。


16.文件IO缓存,使用具有缓存策略的输入流,BufferedInputStream替代InputStream,BufferedReader替代 Reader,BufferedReader替代BufferedInputStream.对文件、网络IO皆适用。例如:

HttpURLConnection con=(HttpURLConnection)url.openConnection();BufferedReader input =newBufferedReader(new InputStreamReader(con.getInputStream()));
Strings;
while((s = input.readLine()) != null) {

}


17.Layout优化:使用抽象布局标签(include,viewstub,merge)、去除不必要的嵌套和View节点、减少不必要的infalte及其他Layout方面可调优点,顺带提及布局调优相关工具 (hierarchy viewer和lint)。

18.TextView属性优化:TextView的android:ellipsize=”marquee”跑马灯效果极耗性能。

19.使用hashMap代替arrayList,时间复杂度降低一个数量级。


20.数据库优化,http://www.trinea.cn/android/database-performance/