如何优化Android程序

来源:互联网 发布:中国最穷的地方 知乎 编辑:程序博客网 时间:2024/05/20 13:08
1.Java内存控制
  对于字符串操作而言如果需要连加这样的操作建议使用StringBuilder,经过调试不难发现如果你的字符串每次连加,使用String需要的内存开销会远大于StringBuilder,然后Android手机常规的运行内存大约在128MB左右,对于运行多任务就需要考虑了,
Android开发网提示因为Java有GC不需要手动释放那么分配的时候就要格外的小心,频繁的GC操作仍然是很影响性能的,在调试时我们可以通过logcat查看内存释放情况。


  2.循环使用
  平时在访问一个属性的时候效率远比一个固定变量低,如果你的循环估计次数常常大于5,假设xxx.GetLength()方法的值一般大于5,推荐这样写,比如
  for(int i=0;i<xxx.GetLength();i++)
  这里xxx.GetLength在每次循环都要调用,必然会影响程序效率,在游戏开发中显得更为明显,改进的方法应该为
  int j=xxx.GetLength()
   for(int i=0;i<j;i++)


  3.图片的优化
  在Android平台中2维图像处理库BitmapFactory做的比较智能,为了减少文件体积和效率,常常不用很多资源文件,而把很多小图片放在一个图片中,有切片的方式来完成,在J2ME中我们这样是为了将少文件头而解决MIDP这些设备的问题,而Android中虽然机型硬件配置都比较高,有关Android G1硬件配置可以参考
G1手机参数以及评测,但是当资源多时这样的运行效率还是令人满意的,至少Dalvik优化的还不是很够。



Android代码优化的核心原则:不做不必要的事,不分配不必要的内存
1、字符串频繁操作时,多用StringBuffer而少用String
2、尽量使用本地变量,即反复使用的变量要先保存成临时或局部变量,尤其是循环中使用的变量
3、String方法中substring和indexOf都是native方法可以大量的使用
4、如果函数返回String类型,而且返回后的使用就是要加入到StringBuffer此时可以直接传入StringBuffer
5、用两个一维数组代替二维数组 int[][]=====int[] int[]
6、如果返回直接类型足够了,就不应返回接口类型如假如返回Hashmap就足够了,请不要返回Map
7、如果一个方法不访问(不修改)成员变量,请用static方法
8、尽量不用getters和setters,如果你非要用的话请加上final关键字,编译器会把它当成内联函数
9、永远不要在for循环第二个参数中使用方法调用
10、不修改的static变量请用static final常量代替
11、foreach可以用来处理数组和arraylist,如果处理其他对象相当于Iterator
12、避免使用枚举,请使用常量代替
13、慎用浮点数 float尤其是大量的数学运算
14、不使用的引用变量要手动置null,提高内存被回收的几率
15、慎用图片操作,使用后要立即释放资源