Android优化之代码优化

      本章节是对《Android优化技术详解》一书中代码优化的读后总结,选取了其中常用的一些需要注意的优化细节。

    1.在字符串频繁操作时,尤其是字符串拼接时多使用StringBuffer或者StringBuilder,第一个是线程安全的,第二个线程不安全,但是速度快一些。

    2.循环优化,一般的写法是这样

		List<String> list = getList();
		for (int i = 0; i < list.size(); i++) {
			
		}
    最好是将循环中的变量提取到左边,比如这样

		List<String> list = getList();
		for (int i = 0,p =list.size(); i < p; i++) {
			
		}
这样list.size方法只用调用1次

   3.在try...catch中使用的变量如果不再使用,就在catch中置空,使其更快的回收

		Object object =null;
		try {
			object = new Object();
		} catch (Exception e) {
			object =null;
		}
   4.少用new创建对象,会调用所有的构造函数,如果一个对象实现了Cloneable接口,可以使用clone方法。

   5.乘法或者除法运算尽量使用位运算,能大幅提升运算速度。

   6.不修改的static变量,请用static final常量替代。

   7.如果返回了String类型,而且返回后的使用就是要加入到StringBuffer中,可以直接传入StringBuffer。

   8.编译器会将构造函数之外的初始化操作移动到构造函数中,所以尽量直接在构造函数中初始化。

   9.如果知道具体的大小,可以在创建StringBuffer,Vector等对象时设置一个大小,可以不用考虑因自增长所带来的分配新的内存问题。

   10.避免使用枚举,在编译时会独立生成一个很大的.class文件,会牺牲执行的速度以及增大文件体积。

   11.cursor查询优化,一般的查询语句是这样写的

		while(cursor.moveToNext()){
			String name = cursor.getString(cursor.getColumnIndex(People.NAME));
			String number= cursor.getString(cursor.getColumnIndex(People.NUMBER));
		}
 这样的方式没有错误,但是在数据量大的情况下会很慢,只需要一点点优化就可以提升很多

		int mName = cursor.getColumnIndex(People.NAME);
		int mNumber = cursor.getColumnIndex(People.NUMBER);
		while(cursor.moveToNext()){
			String name = cursor.getString(mName);
			String number= cursor.getString(mNumber);
		}
   12.Listview采用ViewHolder进行优化,新出的recycleview已经强制使用viewHolder了。

   13.在用户的触屏操作时,当用户按下手指时,一般不仅会调用ACTION_DOWN,还会有ACTION_MOVE进行频繁的调用,所以需要考虑action_move中的事件处理。

   14.surfaceview在绘制上可以采用脏矩形进行刷新,使帧数更高一些。

   15.恰当地使用缓存可以使用户体验更好,比如网络请求数据可以在请求到数据后进行缓存,在下次加载时直接读取缓存数据即可,分为磁盘缓存,内存缓存,数据库缓存。

   16.选用适合的数据结构也很重要,ArrayList和LinkedList,如果是查询多选前面的,如果是插入删除频繁可以考虑后者。








  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值