android优化注意事项(此处只说建议,不进行解释)
来源:互联网 发布:宏大叙事 知乎 编辑:程序博客网 时间:2024/05/18 01:51
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操作,如
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
- android优化注意事项(此处只说建议,不进行解释)
- Android性能优化—不建议使用枚举Enum
- Android性能优化—不建议使用枚举Enum
- Android性能优化—不建议使用枚举Enum
- 优化Vista部分建议和升级注意事项
- android 代码优化建议
- Android开发优化建议
- Android优化建议
- Android内存优化建议
- Android性能优化注意事项
- Android应用程序优化注意事项
- Android 性能优化注意事项
- android代码官方建议优化
- android--40条优化建议
- Android 代码性能优化建议
- Android优化性能的建议
- android内存优化的建议
- Android内存管理优化建议
- iOS 打包ipa之Missing iOS Distribution signing identity问题
- Android Matrix理论与应用详解
- SparkML之DistributedMatrix(一)
- 数据库表字段 实体类字段 命名不匹配
- ceph存储 Linux文件空洞与稀疏文件
- android优化注意事项(此处只说建议,不进行解释)
- Oracle 数据库查询表空间sql
- 大数据和统计的区别
- 测试
- golang利用组合实现继承
- 5.6 smtp_proto函数:解析smtp协议
- java 日期处理大全
- SVN使用log,list,cat,diff查看所有及特定文件版本信息
- STL序列式容器 - heap