android 性能优化

[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] 线程优化等,线程使用完,关闭不必要的线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值