Android代码优化(一)
来源:互联网 发布:电子cad软件 编辑:程序博客网 时间:2024/06/05 08:58
最近在优化代码,把一些优化的东西整理一下记录,个人感觉代码优化技术含量很高,暂且把此次的问题归为初级优化一,后续技术学深了,再去写一篇优化之二
避免创建不必要的对象
对象的创建都是要占用资源的,如果你在循环程序中创建对象,由于过多的占用内存,你将定时的启动内容回收机制,从而降低了运行速度。所以,当你不需要时,你应该避免创建类实例。
必须使用字符串时,考虑 当字符串不可变化时,使用String类型;当可变时使用StringBuffer类型。
当需要字符串+时,使用StringBuffer。String s = “aaa” + “bbb”;
上面的语句实际上创建了三个String对象,性能受损。
StringBuffer s= new StringBuffer();
s.append(“aaa”);
s.append(“bbb”);
上面仅仅创建一个对象。
避免创建重复对象
String s= new String("abc");//永远不要这么干!
Strong s = "abc";//改成这样
多使用原始封装的方法
当处理字符串时,应该多的使用像String.indexOf(),String.lastIndex(),以及与它们同等的方法。
避免在类内部进行Getters/Setters
据说在C++语言中,经常使用getters(eg. i=getCount())而不用局部变量的形式(i=mCount),因为编译器可以通过内联进入getters。
但是在Android中,此习惯是不好的,因为调用虚拟机的代价很高,比直接使用局部变量费时的多.所以,在公共的接口中定义getters、setters是可取的,当时,在类中,你应该直接通过局部变量来访问。
如:
for (int i = 0; i < this.getCount(); i++)
应该写为:
int mCount = this.getCount();
for (int i = 0; i < mCount; i++)
多使用接口的具体实现类(Prefer virtual over interface)
当你要声明一个HashMap对象时,你可以声明它为一个HashMap类,或一个Map 类:
Map myMap = new HashMap(); HashMap myMap = new HashMap();
哪一个更好的呢?
在PC机编程中,你应该更倾向与声明为Map,因为你可以调用Map中提供的接口来实现更多的功能。但是在手机开发中,通过此种方法的调用,比直接调用方法多花费一倍多的时间。所以,当你用HashMap类,而且它满足自己的需要,就不需要用声明为Map的方法。这个我单独写了个demo测试了一下,确实如此,至于根本原因还没搞清楚,暂且先记住用法。
了解和使用库
Java提供了强大而复杂的类库,在完成某个常用功能之前,看看Java类库中是否已经存在类似功能的类库。一方面减少工作量,一方面使得自己的程序更加简洁高效。例如:向量(Collection,Set,List…)中字符串的排序:Collections.sort(v);
忽略大小写的排序:Collections.sort(v,String.CASE_INSENSITIVE_ORDER)
还有许多实用类库,还需要平时多学习。
使用SparseArray代替HashMap<Integer,Object>
SparseArray是android里为<Interger,Object>这样的HashMap而专门写的类,目的是提高效率,其核心是折半查找函数(binarySearch)。在Android中,当我们需要定义HashMap<Integer, E> hashMap =
new
HashMap<Integer, E>();
时,我们可以使用后面的方式来取得更好的性能。SparseArray<E> sparseArray =
new
SparseArray<E>();
相应的也有SparseBooleanArray,用来取代HashMap<Integer, Boolean>,SparseIntArray用来取代HashMap<Integer, Integer>。
这里就先说这些大路边上的,代码优化水很深啊,还需要多潜进去研究学习才能写出高效的代码!
- Android代码优化(一)
- Android代码优化(一)
- Android代码性能优化技巧 (一)
- Android 应用性能优化(一)JAVA代码优化
- Android优化技术(一)之代码优化篇
- Android优化(一)_Java代码优化
- 代码优化(一)
- Android进阶专题一:代码优化
- 代码优化经历(一)
- android性能优化(一)内存优化
- android字符串 优化(一)
- Android 性能优化(一)
- Android性能优化(一)
- Android性能优化(一)
- Android性能优化(一)
- Android内存优化(一)
- android 启动优化(一)
- android电量优化(一)
- JAVA学习第三十三课(常用对象API) —迭代器
- strcpy函数的实现
- Leetcode Simplify Path
- python 定义函数
- PHP之道
- Android代码优化(一)
- 记忆深刻的菱形结构
- hdu 1044Collect More Jewels(bfs+dfs)
- poj 1548 Robots 最小路径覆盖
- hibernate之1.环境搭建
- UVA - 439 Knight Moves
- arc strong weak mrc retain
- Find Minimum in Rotated Sorted Array
- python模拟登陆杂记