注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

罔少年

QQ 332256483

 
 
 

日志

 
 

Android 性能提升 优化代码写法  

2016-02-05 09:34:14|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1、StringBuffer代替String 
StringBuffer为字符串变量,可以在原对象基础上修改对象值
String为字符串常量。若String对象的值改变,默认会重写创建一个新对象,释放原对象

2、用到时再创建对象
在新的Android API中引入了ViewStub,其主要一个作用就是延迟加载布局。同理,我们在写代码的时候一样,
尽量在用到的时候再去创建对象。也不要创建不必要的对象

3、多使用静态Static
多用Static来修饰常量

static final int intVal = 42;
static final String strVal = "Hello, world!";

尽量使用静态方法,静态方法提升15%-20%的效率

4、for循环优化

List<User> list.....


//写法1

for(int i=0; i<list.length; i++){

User user = list.get(i);

}


//写法2

int length = list.length;

for(int i=0; i<length; i++) {

User user = list.get(i);

}


//写法3

for(User user : list) {

user....

}


写法1:最慢,每次for都会重写获取数组长度
写法2:较优,相对1不比每次获取数组长度
写法3:在没有JIT机器上运行最快,如果有,跟2不相上下

5、SparseArray替代HashMap
SparseArray是Android里为<Interger, Object>这样的HashMap而设计的类。核心是折半查找函数

HashMap<Integer, E> hashMap = new HashMap<Intrger, E>();

//替换成

SparseArray<E> sparseArray = new SparseArray<E>();

当然还有SparseBooleanArrayLongSparseArray  使用方式
为什么SparseArray比HashMap效率更高?
HashMap在每一次对数据存放时,都需要独立一个Entry对象进行传值,而SparseArray禁止系统自动封装键值对,所以效率更高

6、序列化数据使用Protobufs
终于看懂了,其实和XML 差不多,也就是把某种数据结构的信息,以某种格式保存起来。主要用于数据存储、传输协议格式等场合。优点就是比xml的序列化及反序列化快,缺点就是没有任何可读性。有google自家研发,但貌似市场反应不大,冷下去了。还是乖乖用json或者xml吧


  评论这张
 
阅读(36)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017