如何编写高效的Android代码

时间是很宝贵的东西,在编写Android代码的时候尽可能的编写出高效的Android代码可以节省你很多的时间,让你有时间去泡妞、去陪女朋友、去陪基友,去吃饭、去娱乐、去睡觉!毕竟,谁都不想整夜整夜的加班,然后还乱吼:时间都去哪了?!下面就整理了怎样提高效率,编写高效的Android代码!看到这,偷笑了吧,表掩饰,我已看到!

      对于如何判断一个系统的不合理,这里有两个基本的原则:

      一、不要做不必要做的事情。

      二、尽可能的节省内存的使用优化链接:

http://c.tieba.baidu.com/p/3385857357
http://c.tieba.baidu.com/p/3382966352
http://c.tieba.baidu.com/p/3382954222
http://c.tieba.baidu.com/p/3382563609
http://c.tieba.baidu.com/p/3382558396
http://c.tieba.baidu.com/p/3382552536
http://c.tieba.baidu.com/p/3382546812
http://c.tieba.baidu.com/p/3382532827
http://c.tieba.baidu.com/p/3382528266
http://c.tieba.baidu.com/p/3382282203
http://c.tieba.baidu.com/p/3382275336
http://c.tieba.baidu.com/p/3382138598
http://c.tieba.baidu.com/p/3382129554
http://c.tieba.baidu.com/p/3382119440
http://c.tieba.baidu.com/p/3382112763
http://c.tieba.baidu.com/p/3382108617
http://c.tieba.baidu.com/p/3382102893
http://c.tieba.baidu.com/p/3382088130
http://c.tieba.baidu.com/p/3382083777
http://c.tieba.baidu.com/p/3382075650
http://c.tieba.baidu.com/p/3381900226
http://c.tieba.baidu.com/p/3381863343
http://c.tieba.baidu.com/p/3381859866
http://c.tieba.baidu.com/p/3380188862
http://c.tieba.baidu.com/p/3380183081
http://c.tieba.baidu.com/p/3380177423
http://c.tieba.baidu.com/p/3380172625
http://c.tieba.baidu.com/p/3380005440
http://c.tieba.baidu.com/p/3380004300
http://c.tieba.baidu.com/p/3379999489
http://c.tieba.baidu.com/p/3379998973
http://c.tieba.baidu.com/p/3379998496
http://c.tieba.baidu.com/p/3379996820
http://c.tieba.baidu.com/p/3379995674
http://c.tieba.baidu.com/p/3379994779
http://c.tieba.baidu.com/p/3379994779
http://c.tieba.baidu.com/p/3379994177
http://c.tieba.baidu.com/p/3379943364
http://c.tieba.baidu.com/p/3379940750
http://c.tieba.baidu.com/p/3381892748
http://c.tieba.baidu.com/p/3383053501
http://c.tieba.baidu.com/p/3383000993
http://c.tieba.baidu.com/p/3382999589
http://c.tieba.baidu.com/p/3382994306
http://c.tieba.baidu.com/p/3382988175
http://c.tieba.baidu.com/p/3382954235
http://c.tieba.baidu.com/p/3382949995
http://c.tieba.baidu.com/p/3382893713
http://c.tieba.baidu.com/p/3382889038
http://c.tieba.baidu.com/p/3382879803
http://c.tieba.baidu.com/p/3382879803
http://c.tieba.baidu.com/p/3382876004
http://c.tieba.baidu.com/p/3382872177
http://c.tieba.baidu.com/p/3382868536
http://c.tieba.baidu.com/p/3382863765
http://c.tieba.baidu.com/p/3382859855
http://c.tieba.baidu.com/p/3382811268
http://c.tieba.baidu.com/p/3382811268
http://c.tieba.baidu.com/p/3382806366
http://c.tieba.baidu.com/p/3382801522
http://c.tieba.baidu.com/p/3382796686
http://c.tieba.baidu.com/p/3382791794
http://c.tieba.baidu.com/p/3382787163
http://c.tieba.baidu.com/p/3382787163
http://c.tieba.baidu.com/p/3382782294
http://c.tieba.baidu.com/p/3382777696
http://c.tieba.baidu.com/p/3382773161
http://c.tieba.baidu.com/p/3382768319
http://c.tieba.baidu.com/p/3382763511
http://c.tieba.baidu.com/p/3382758804
http://c.tieba.baidu.com/p/3382754323
http://c.tieba.baidu.com/p/3382749517
http://c.tieba.baidu.com/p/3382744553
http://c.tieba.baidu.com/p/3382740101
http://c.tieba.baidu.com/p/3382735589
http://c.tieba.baidu.com/p/3382731038
http://c.tieba.baidu.com/p/3382726406
http://c.tieba.baidu.com/p/3382721802
http://c.tieba.baidu.com/p/3382717122
http://c.tieba.baidu.com/p/3382712446
http://c.tieba.baidu.com/p/3382707585
http://c.tieba.baidu.com/p/3382702393
http://c.tieba.baidu.com/p/3382696270
http://c.tieba.baidu.com/p/3382691379
http://c.tieba.baidu.com/p/3382672363
http://c.tieba.baidu.com/p/3382661647
http://c.tieba.baidu.com/p/3382657909
http://c.tieba.baidu.com/p/3382652157
http://c.tieba.baidu.com/p/3382647804
http://c.tieba.baidu.com/p/3382624856
http://c.tieba.baidu.com/p/3382620194
http://c.tieba.baidu.com/p/3382616420
http://c.tieba.baidu.com/p/3382612765
http://c.tieba.baidu.com/p/3382607942
 

      下面是常用的几点优化建议:

      1、尽可能避免创建对象(Object)

      因为对象的创建并不是没有代价的,如果你在一个用户界面的循环中分配一个对象,你不得不强制的进行内存回收,那么就会使用户体验出现稍微“打嗝”的现象。

      当从原始的输入数据中提取字符串时,试着从原始字符串返回一个子字符串,而不是创建一份拷贝。

      2、使用自身方法(Use Native Methods)

      当处理字符串的时候,不要犹豫,尽可能多的使用诸如String.indexOf()、String.lastIndexOf()这样对象自身带有的方法。因为这些方法使用C/C++来实现的,要比在一个java循环中做同样的事情快10-100倍。

      3、使用Safe.ijiami去检测下你码完的代码

      Android代码码完,开发完Android App,用Safe.ijiami可以检测出代码存在的漏洞,一分钟完事,不耽误你码下一批代码。最重要的是它还会根据你的漏洞提出解决方案,省去你去一个又一个代码的扒拉!

      4、缓冲属性调用Cache Field Lookups

      访问对象属性要比访问本地变量慢得多。你不应该这样写你的代码:

for (int i = 0; i < this.mCount; i++)

      dumpItem(this.mItems[i]);

      而是应该这样写:

  int count = this.mCount;

  Item[] items = this.mItems;

  for (int i = 0; i < count; i++)

      dumpItems(items[i]);

(我们直接使用“this”表明这些是它的成员变量)

      5、声明Final常量

      我们可以看看下面一个类顶部的声明:

static int intVal = 42;

static String strVal = “Hello, world!”;

      当一个类第一次使用时,编译器会调用一个类初始化方法,这个方法将42存入变量intVal,并且为strVal在类文件字符串常量表中提取一个引用,当这些值在后面引用时,就会直接属性调用。

      我们可以用关键字“final”来改进代码:

static final int intVal = 42;

static final String strVal = “Hello, world!”;

      这个类将不会调用类初始化方法,因为这些常量直接写入了类文件静态属性初始化中,这个初始化直接由虚拟机来处理。代码访问intVal将会使用Integer类型的42,访问strVal将使用相对节省的“字符串常量”来替代一个属性调用。

      将一个类或者方法声明为“final”并不会带来任何的执行上的好处,它能够进行一定的最优化处理。例如,如果编译器知道一个Get方法不能被子类重载,那么它就把该函数设置成Inline。

      6、避免浮点类型的使用

      嵌入式的处理器通常并不支持浮点数的处理,因此所有的“float”和“double”操作都是通过软件进行的,一些基本的浮点数的操作就需要花费毫秒级的时间。

      同理,即使是整数,一些芯片也只有乘法而没有除法。在这些情况下,整数的除法和取模操作都是通过软件实现。

      7、避免列举类型Avoid Enums

      列举类型非常好用,当考虑到尺寸和速度的时候,就会显得代价很高,例如:

public class Foo {

   public enum Shrubbery { GROUND, CRAWLING, HANGING }

}

      这会转变成为一个900字节的class文件(Foo$Shrubbery.class)。第一次使用时,类的初始化要在独享上面调用方法去描述列举的每一项,每一个对象都要有它自身的静态空间,整个被储存在一个数组里面(一个叫做“$VALUE”的静态数组)。那是一大堆的代码和数据,而仅仅是为了三个整数值。

Shrubbery shrub = Shrubbery.GROUND;

       这会引起一个静态属性的调用,如果GROUND是一个静态的Final变量,编译器会把它当做一个常数嵌套在代码里面。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。