常规原则
- 将Acitivity 中的Window 的背景图设置为空。getWindow().setBackgroundDrawable(null)
- 循环中不要使用声明临时临时变量
- 合理选择数据结构/数据类型:根据数据结构的特性,比如查找功能比较多的使用,可以实现底层基于动态数组的ArrayList,但,移动,删除操作比较多的时候,可以使用底层基于链表实现的LinkedList
- 熟悉常用的设计模式,并在代码中使用来合理的解耦
- Cursor的打开关闭是非常耗时,注意对cursor的使用
- 能用文件才做的就不要使用数据库(文件比数据库快10倍)
- 使用<include><merge><viewstub>优化布局
- 如果方法用不到成员变量,可以把方法申明为static,性能会提高到15%到20%
- 避免使用getter/setter存取field,可以把field申明为public,直接访问
- static的变量如果不需要修改,应该使用static final修饰符定义为常量
- 对ListView进行优化
Pool & Cache
- 在使用Handler进行异步通信的的时候使用Message.obtain()或者Handler.obtainMessage()方式而非new Message()。
- 使用缓存:涉及到I/O操作使用BufferedInputStream替代InputStream。
- 使用线程池而非单独去使用线程。
- ListView进行缓存优化,复用ConvertView
- 网络缓存:数据库缓存http response,根据http头信息中的Cache-Control域确定缓存过期时间。
工具
- Inspect Code:静态代码检查工具:Android studio—Analyze—Inspect Code…/Code cleanup… ,用于检测代码中潜在的问题、存在效率问题的代码段并提供改善方案;
- DDMS—TraceView,用于查找程序运行时具体耗时在哪;
- StrictMode:用于查找程序运行时具体耗时在哪,需要集成到代码中;
网友评论