android性能优化最佳实践建议

为了写出更加高效的代码,我们需要遵循两个原则:
一 不要做没有必要做的工作
二 不要分配多余的内存
建议一:不要创建没有必要的对象
建议二:如果不用获取成员变量,建议方法使用静态方法,这样方法就不需要获取对象的状态,方法的调用也会提高15%~20%的速度

建议三:建议基本类型常量和String常量使用static 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!";

这里类就不需要clinit 方法了,因为静态常量存在dex文件的静态成员初始化器中了。那么程序使用intVal的时候就直接使用42,获取strVal的时候就会直接使用字符串常量,而不是通过成员的查找来获取,这样开销就会低。

总之,使用static final修饰的常量,我们获取常量的时候直接从常量池中获取,不需要结果从成员表查找成员的步骤,没有final修饰的常量,我们需要多进行一步成员查找过程。

建议四:在类的内部,获取成员值或者设置值的时候,不要使用getter和setter方法,直接操作成员变量

建议四:使用增强循环语法(for-each)

建议四:内部类需要访问外部类成员的时候,成员使用package访问权限而不是private访问权限
由于VM认为一个类访问另外一个的private成员是不合法的,所以会生成一个对应的package访问权限的静态成员。这样就会增加一些消耗。

建议五:慎重使用浮点型数据,因为整形数据的获取速度是浮点型的两倍

建议六:熟悉库API,能够使用库提供的API解决的问题及不要去造轮子解决问题。其实库API一般都会和本地库API调用有关,这样在性能上是经过优化

建议七:慎重使用本地函数(针对Android NDK编程),NDK编程需要和本地接口,JIT打交道,处理不当会造成性能问题

你可能感兴趣的:(android性能优化)