- 时间换时间:
如禁用电脑的一些开机启动项,通过减少这些没必要的启动项的时间从而节省开机时间
如网站界面上数据的分批获取,
AJAX
技术 - 时间换空间:
如拷贝文件时new一个字节数组当缓冲器,即
byte[] buffer = new byte[1024]
。 为什么只new
一个1024个字节的数组呢,new
一个更大的字节数组不是一下就把文件拷贝完了么?这么做就是为了牺牲时间节省有限的内存空间 - 空间换时间:
如用
Windows
系统自带的搜索文件的功能搜索文件时会很慢,但是我们牺牲电脑硬盘空间安装一个everything
软件来搜索文件就特别快 - 空间换空间: 如虚拟内存
- 采用硬件加速,在清单文件中
application
节点添加android:hardwareAccelerated=”true”
。不过这个需要在android 3.0
才可以使用。android4.0
这个选项是默认开启的。 View
中设置缓存属性setDrawingCache
为true
.- 优化你的布局.
- 动态加载
View
. 采用ViewStub
避免一些不经常的视图长期握住引用. - 将
Acitivity
中的Window
的背景图设置为空。getWindow().setBackgroundDrawable(null);``android
的默认背景是不是为空。 - 采用
<merge>
优化布局层数。 采用<include>
来共享布局。 - 利用
TraceView
查看跟踪函数调用。有的放矢的优化。 cursor
的使用。不过要注意管理好cursor
,不要每次打开关闭cursor
.因为打开关闭Cursor
非常耗时。Cursor.require
用于刷cursor
.- 采用
SurfaceView
在子线程刷新UI
, 避免手势的处理和绘制在同一UI
线程(普通View
都这样做)。 - 采用
JNI
,将耗时间的处理放到c/c++
层来处理。 - 有些能用文件操作的,尽量采用文件操作,文件操作的速度比数据库的操作要快10倍左右。
- 避免创建不必要的对象
- 如果方法用不到成员变量,可以把方法申明为
static
,性能会提高到15%到20% - 避免使用
getter/setter
存取field
,可以把field
申明为public
,直接访问 static
的变量如果不需要修改,应该使用static final
修饰符定义为常量- 使用增强
for
循环,比普通for
循环效率高,但是也有缺点就是在遍历 集合过程中,不能对集合本身进行操作 - 合理利用浮点数,浮点数比整型慢两倍;
- 针对
ListView
的性能优化
- 邮箱 :charon.chui@gmail.com
- Good Luck!