
(本图为:22点性能优化之Android开发)
?
程序能否运行的快速而高效,这在资源有限的移动终端设备上尤其显得重要。因为即使目前最强大的移动终端的计算能力也无法和市场上普通的桌面PC相抗衡。简单地说,有两个原则在资源受限的系统中必须遵守:
不做不必要的事情。
不分配不必要的内存。
在Android中,设计人员已经从UI、框架、基础平台等多个层次的多个方面进行了优化。但对于开发者而言,在开发过程中,仍然需要针对消耗资源比较多的设计进行规避或者优化。在接下来的内容中,将会针对Android的22点开发性能优化做简略的介绍。
1.? 采用硬件加速,在androidmanifest.xml中application添加android:hardwareAccelerated=”true”。不过这个需要在android 3.0才可以使用。android4.0这个选项是默认开启的。
2.? View中设置缓存属性.setDrawingCache为true.
?3.??? 优化你的布局。通过Android sdk中tools目录下的layoutopt 命令查看你的布局是否需要优化。
4.??? 动态加载View. 采用ViewStub 避免一些不经常的视图长期握住引用.
5.??? 将Acitivity 中的Window 的背景图设置为空。getWindow().setBackgroundDrawable(null);android的默认背景是不是为空。
6.??? 采用<merge> 优化布局层数。 采用<include >来共享布局。
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.? 避免创建不必要的对象
16.? 如果方法用不到成员变量,可以把方法申明为static,性能会提高到15%到20%
?17.? 避免使用getter/setter存取field,可以把field申明为public,直接访问
18.? static的变量如果不需要修改,应该使用static? final修饰符定义为常量
19. ?使用增强for循环
?如:Set<Object> set = new HashSet<Object>();
?// for循环遍历:
for (Object obj: set) {
?if(obj instanceof Integer){
?int aa= (Integer)obj;
?}else if(obj instanceof String){
?String aa = (String)obj
?
} ……..
?}
缺点:在遍历 集合过程中,不能对集合本身进行操作
?
for (String str : set) {
?set.remove(str);//错误!
}
20.? 私有内部类要访问外部类的field或方法时,其成员变量不要用private,因为在编译时会生成setter/getter,影响性能。可以把外部类的field或方法声明为包访问权限
?
21.? 合理利用浮点数,浮点数比整型慢两倍;
?
22.针对ListView的性能优化
?
item尽可能的减少使用的控件和布局的层次;背景色与cacheColorHint设置相同颜色;ListView中item的布局至关重要,必须尽可能的减少使用的控件,布局。RelativeLayout是绝对的利器,通过它可以减少布局的层次。同时要尽可能的复用控件,这样可以减少ListView的内存使用,减少滑动时GC次数。ListView的背景色与cacheColorHint设置相同颜色,可以提高滑动时的渲染性能。ListView中getView是性能是关键,这里要尽可能的优化。getView方法中要重用view;getView方法中不能做复杂的逻辑计算,特别是数据库操作,否则会严重影响滑动时的性能。
以上内容就是对Android开发性能优化的22点做出相对应的简介,仅供小伙伴们参考,好东西要与大家分享。
文章来源于:http://www.alqsoft.com/xinwenzixun/androidkaifa/2014/1113/175.html