android 性能优化

1.ListView

ListView中item的布局至关重要,必须尽可能的减少使用的控件,布局。RelativeLayout是绝对的利器,通过它可以减少布局的层次。同时要尽可能的复用控件,这样可以减少ListView的内存使用,减少滑动时GC次数。

ListView的背景色与cacheColorHint设置相同颜色,可以提高滑动时的渲染性能。

ListView中getView是性能是关键,这里要尽可能的优化。

-------------------------------------------

关于GoogleIO大会关于Adapter的优化,参考以下文章:

 Android开发之ListView适配器(Adapter)优化

http://www.ideasandroid.com/archives/295

关于fill_parent和wrap_content,fill_parent比wrap_content的性能高很多,尽量使用fill_parent

--------------------------------------------

2.String

不要随意的使用stingA=StringB+StringC的写法,有大量拼接操作的地方用StringBuilder代替。

3.数据交换

与网络和数据库的数据交换,不要为了方便,把类型都定义为String。

4.减少网络交互的次数

访问server端时,建立连接本身比传输需要跟多的时间,如非必要,不要将一交互可以做的事情分成多次交互(这需要与Server端协调好)。

5.使用JSON吧

当访问一次服务器,拿回来的数据,竟然xml标记比被传输的有效信息还多,这就很让人无语了。。。。

6.采用硬件加速,在androidmanifest.xml中application添加android:hardwareAccelerated="true"。不过这个需要在android3.0才可以使用。

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

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

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

10.采用<merge>优化布局层数。采用<include>来共享布局。

11.查看Heap的大小mat分析各类内存占用情况

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

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

------------------------------------------------

对于Cursor而言,在移动位置时首先判断Cursor是否为空,最终使用完仍然需要close方法,如果重用,可以使用deactivate方法释放当前资源,通过requery方法再次查询。

-----------------------------------------------------------------------

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

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

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

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

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

19.Android处理底层I/O性能不是很理想,如果不想使用NDK则可以通过MemoryFile类实现高性能的文件读写操作。MemoryFile顾名思义就是内存文件的意思

20.线程优化等,线程使用完,关闭不必要的线程。

相关推荐