[b]1.[/b] ListView
ListView中item的布局至关重要,必须尽可能的减少使用的控件,布局。RelativeLayout是绝对的利器,通过它可以减少布局的层次。同时要尽可能的复用控件,这样可以减少ListView的内存使用,减少滑动时GC次数。
ListView的背景色与cacheColorHint设置相同颜色,可以提高滑动时的渲染性能。
ListView中getView是性能是关键,这里要尽可能的优化。
-------------------------------------------
关于Google IO大会关于Adapter的优化,参考以下文章:
Android开发之ListView 适配器(Adapter)优化
http://www.ideasandroid.com/archives/295
关于fill_parent和wrap_content,fill_parent比wrap_content的性能高很多,尽量使用fill_parent
--------------------------------------------
[b]2.[/b] String
不要随意的使用stingA=StringB+StringC的写法,有大量拼接操作的地方用StringBuilder代替。
[b]3.[/b] 数据交换
与网络和数据库的数据交换,不要为了方便,把类型都定义为String。
[b]4.[/b]减少网络交互的次数
访问server端时,建立连接本身比传输需要跟多的时间,如非必要,不要将一交互可以做的事情分成多次交互(这需要与Server端协调好)。
[b]5.[/b] 使用JSON吧
当访问一次服务器,拿回来的数据,竟然xml标记比被传输的有效信息还多,这就很让人无语了。。。。
[b]6.[/b] 采用硬件加速,在androidmanifest.xml中application添加 android:hardwareAccelerated="true"。不过这个需要在android 3.0才可以使用。
[b]7.[/b] View中设置缓存属性.setDrawingCache为true.
[b]8.[/b] 动态加载View. 采用ViewStub 避免一些不经常的视图长期握住引用.
[b]9.[/b] 将Acitivity 中的Window 的背景图设置为空。getWindow().setBackgroundDrawable(null);android的默认背景是不是为空。
[b]10.[/b] 采用<merge> 优化布局层数。 采用<include >来共享布局。
[b]11.[/b] 查看Heap 的大小 mat分析各类内存占用情况
[b]12.[/b] 利用TraceView查看跟踪函数调用。有的放矢的优化。
[b]13.[/b] cursor 的使用。不过要注意管理好cursor,不要每次打开关闭cursor.因为打开关闭Cursor非常耗时。 Cursor.require用于刷新cursor.
------------------------------------------------
对于Cursor而言,在移动位置时首先判断Cursor是否为空,最终使用完仍然需要 close方法,如果重用,可以使用deactivate方法释放当前资源,通过requery方法再次查询。
-----------------------------------------------------------------------
[b]14.[/b] 采用环形Buffer(可以采用链表数据结构实现)。可以设置一个链表长度的上限,根据手势的变化来不断地更新环形Buffer的内容。
[b]15.[/b] 采用SurfaceView在子线程刷新UI, 避免手势的处理和绘制在同一UI线程(普通View都这样做)。
[b]16.[/b] 采用JNI,将耗时间的处理放到c/c++层来处理。
[b]17.[/b] 有些能用文件操作的,尽量采用文件操作,文件操作的速度比数据库的操作要快10倍左右。
[b]18.[/b] 懒加载和缓存机制。访问网络的耗时操作启动一个新线程来做,而不要再UI线程来做。
[b]19.[/b] Android处理底层I/O性能不是很理想,如果不想使用NDK则可以通过MemoryFile类实现高性能的文件读写操作。 MemoryFile顾名思义就是内存文件的意思
[b]20.[/b] 线程优化等,线程使用完,关闭不必要的线程。
ListView中item的布局至关重要,必须尽可能的减少使用的控件,布局。RelativeLayout是绝对的利器,通过它可以减少布局的层次。同时要尽可能的复用控件,这样可以减少ListView的内存使用,减少滑动时GC次数。
ListView的背景色与cacheColorHint设置相同颜色,可以提高滑动时的渲染性能。
ListView中getView是性能是关键,这里要尽可能的优化。
-------------------------------------------
关于Google IO大会关于Adapter的优化,参考以下文章:
Android开发之ListView 适配器(Adapter)优化
http://www.ideasandroid.com/archives/295
关于fill_parent和wrap_content,fill_parent比wrap_content的性能高很多,尽量使用fill_parent
--------------------------------------------
[b]2.[/b] String
不要随意的使用stingA=StringB+StringC的写法,有大量拼接操作的地方用StringBuilder代替。
[b]3.[/b] 数据交换
与网络和数据库的数据交换,不要为了方便,把类型都定义为String。
[b]4.[/b]减少网络交互的次数
访问server端时,建立连接本身比传输需要跟多的时间,如非必要,不要将一交互可以做的事情分成多次交互(这需要与Server端协调好)。
[b]5.[/b] 使用JSON吧
当访问一次服务器,拿回来的数据,竟然xml标记比被传输的有效信息还多,这就很让人无语了。。。。
[b]6.[/b] 采用硬件加速,在androidmanifest.xml中application添加 android:hardwareAccelerated="true"。不过这个需要在android 3.0才可以使用。
[b]7.[/b] View中设置缓存属性.setDrawingCache为true.
[b]8.[/b] 动态加载View. 采用ViewStub 避免一些不经常的视图长期握住引用.
[b]9.[/b] 将Acitivity 中的Window 的背景图设置为空。getWindow().setBackgroundDrawable(null);android的默认背景是不是为空。
[b]10.[/b] 采用<merge> 优化布局层数。 采用<include >来共享布局。
[b]11.[/b] 查看Heap 的大小 mat分析各类内存占用情况
[b]12.[/b] 利用TraceView查看跟踪函数调用。有的放矢的优化。
[b]13.[/b] cursor 的使用。不过要注意管理好cursor,不要每次打开关闭cursor.因为打开关闭Cursor非常耗时。 Cursor.require用于刷新cursor.
------------------------------------------------
对于Cursor而言,在移动位置时首先判断Cursor是否为空,最终使用完仍然需要 close方法,如果重用,可以使用deactivate方法释放当前资源,通过requery方法再次查询。
-----------------------------------------------------------------------
[b]14.[/b] 采用环形Buffer(可以采用链表数据结构实现)。可以设置一个链表长度的上限,根据手势的变化来不断地更新环形Buffer的内容。
[b]15.[/b] 采用SurfaceView在子线程刷新UI, 避免手势的处理和绘制在同一UI线程(普通View都这样做)。
[b]16.[/b] 采用JNI,将耗时间的处理放到c/c++层来处理。
[b]17.[/b] 有些能用文件操作的,尽量采用文件操作,文件操作的速度比数据库的操作要快10倍左右。
[b]18.[/b] 懒加载和缓存机制。访问网络的耗时操作启动一个新线程来做,而不要再UI线程来做。
[b]19.[/b] Android处理底层I/O性能不是很理想,如果不想使用NDK则可以通过MemoryFile类实现高性能的文件读写操作。 MemoryFile顾名思义就是内存文件的意思
[b]20.[/b] 线程优化等,线程使用完,关闭不必要的线程。