android优化注意事项(此处只说建议,不进行解释)

android优化注意事项(此处只说建议,不进行解释)


1.布局避免覆盖式布局,即一个控件覆盖在另一个控件之上


2.布局尽量减少层级。避免过度绘制,具体参见http://trinea.iteye.com/blog/1931228


3.减少LOG输出,发布版本前最好删除所有LOG,或者在LOG代码前判断是否是debug版本


4.for循环尽量使用下标形式,即for(int i=0;i<list.size();i++)


5.SharedPreference不要存储比较大的数据,尽量存储string,最好是英文,SharedPreference不适合存储Json数据和Html格式的数据


6.字符串拼接尽量使用StringBuilder而不是“+”,StringBuilder也可以复用,字符串拆分StringTokenizer和indexOf+substring的方式更好,不要使用split


7.尽量复用对象,不要单独new handler.post之类的


8.一个文件中只创建一个OnClickListener()的写法,然后通过View的id加以甄别,其他监听也是


9.不应该直接new Message() ,应该通过Message的obtain方法或者Handler的obtainMessage方法来复用Message,减少该对象的分配
通过handler.obtainMessage复用之前的message,如下:
handler.sendMessage(handler.obtainMessage(0, object));


10.代码中不要调用GC


11.在数据量较大,不需要有类似于HashMap那样有快速定位需求的情况下,请用SparseArray代替HashMap


12.避免使用枚举,枚举方法数过多


13.
(1)ArrayList和LinkedList的选择,ArrayList根据index取值更快,LinkedList更占内存、随机插入删除更快速、扩容效率更高。一般推荐ArrayList。
(2)ArrayList、HashMap、LinkedHashMap、HashSet的选择,hash系列数据结构查询速度更优,ArrayList存储有序元素,HashMap为键值对数据结构,
LinkedHashMap可以记住加入次序的hashMap,HashSet不允许重复元素。
(3)HashMap、WeakHashMap选择,WeakHashMap中元素可在适当时候被系统垃圾回收器自动回收,所以适合在内存紧张型中使用。
(4)Collections.synchronizedMap和ConcurrentHashMap的选择,ConcurrentHashMap为细分锁,锁粒度更小,并发性能更优。
Collections.synchronizedMap为对象锁,自己添加函数进行锁控制更方便。


Android也提供了一些性能更优的数据类型,如SparseArray、SparseBooleanArray、SparseIntArray、Pair。
Sparse系列的数据结构是为key为int情况的特殊处理,采用二分查找及简单的数组存储,加上不需要泛型转换的开销,相对Map来说性能更优。


14.Java中延迟操作可使用ScheduledExecutorService,不推荐使用Timer.schedule;
Android中除了支持ScheduledExecutorService之外,还有一些delay操作,如

handler.postDelayed,handler.postAtTime,handler.sendMessageDelayed,View.postDelayed,AlarmManager定时等。


未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值