我们在刚开始撸码的时候就应该考虑到这个问题,良好的性能优化会大大提高用户体验,也能让程序运行更持久(主要还是持久)。
首先,我们得保证程序不能崩,比如在获取网络数据的时候要判断接口是否有数据,就算服务器崩了,我们前台也不会崩。这就需要我们有良好的逻辑思维了,有个笨方法,是个变量就判断一下。
其次,在程序运行时我们要减少性能消耗,比如在开发中需要刷新listview,很简单,但是如果数据很多呢,频繁的刷新岂不是很消耗性能,所以我们需要局部刷新来减少消耗。
然后就是我们在开发中需要注意到的:
1.布局优化
通俗点讲就是少点套路,尽量减少布局文件的层级,能让Dalvik运行时迅速找到控件。尽量使用LinearLayout和FrameLayout,RelativeLayout比较复杂,运行时会花费更多CPU时间。
2.绘制优化
不要在onDraw方法中创建新的对象,因为可能会被频繁的调用,会产生大量的临时对象,占用内存,降低效率。也不要在onDraw方法中做耗时任务。
3.响应速度优化
避免在主线程做耗时操作。这个大家应该都知道的,之前看的段子说,项目经理会要求哪里哪里睡几秒啊什么的,后期维护效果明显好拿钱,主要还是看需求了...
4.内存泄漏优化
就像是水龙头没有拧紧一样,一滴一滴,时间久了也能装满一桶。程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。
比如:
- 广播注册没取消
- 静态变量持有Activity的引用
- 查询数据库后没有关闭cursor
- 构造Adapter时,没有使用 convertView 重用
- Bitmap对象不使用时没有释放内存
5.线程优化
尽量使用线程池,避免程序中出现大量的Thread,减少性能开销。
使用ADT自带工具DDMS可以检测内存泄漏,MAT工具也可以,地址http://download.eclipse.org/mat/1.3/update-site
使用方法网上有很多
![大笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)