Android Java代码优化(二)

401 阅读2分钟

「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战

Android Java代码优化(二)

安卓平台的手持设备是嵌入式设备,我们考虑内存、电池使用的问题,所以在编写代码证时应尽可能的优化,提高效率。

延迟使用对象

我们应该减少不要对象的创建,理论上创建的对象越少就意味着越少的垃圾回收,就会提高应用程序的流畅性,虽然现在的安卓设备内存都已经很大了,但养成良好的编程习惯也是每个开发者理应追求的。

boolean condition = false;
StringBuilder stringBuilder = new StringBuilder();
if (condition) {
    stringBuilder.append("value");
}

如果condition为true的时候,才会操作StringBuffer, 所以可以讲new方法写在if的方法体内

boolean condition = false;
        if (condition) {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("value");
        }

避免多次实例化

不要进行同一个对象的多次实例化,它完全没有必要,实例化操作要方法构造函数之内。

public class Test{
        private Bean bean;
        public Test(){
            bean = new Bean();
        }
    }

尽可能使用原生方法

当需要操作字符串时,优先使用本地Native方法,比如indexOf()、lastIndexOf()、charAt() 等自身的方法,因为这些方法是C/C++实现,比在JAVA中循环要快十倍以上。

GET/SET 方法

在封装对象时可以使用get/set方法,但在内部调用中,应当避免使用get/set的方法的,这样会减少开销。

字符串判空

字符串判断为空时,不应该使用size==0? 应该使用TextUtils.isEmpty()会让代码更容易读懂,TextUtils.isEmpty()也可以判断是否会Null。

集合初始化尽量指定大小

大家知道,map的有自己扩容机制,当我们手动指定大小能满足应用场景时,尽量指定大小,因为这样可以减少集合的扩容次数。

HashMap hashMap = new HashMap(10);

转换字符串

有时候为了省事,直接

""+value

正确的做法应该是这样

String.valueOf(value)

常量保存

正常来说一个项目可能会有很多个常量,这些常量会保存我们的配置信息,配置信息又分了很多块的配置信息,所以在定义常量的时候,也应该使用内部类去区分模块。比如我经常这么用

public class AppConfig {

    public static class APP {
        public static final boolean SAVE_LOCAL_LOG = true; //是否打开保存错误本地日志 开关
        public final static int UI_WIDTH = 360;
        public final static int UI_HEIGHT = 640;
        public final static String DEVICE_ID = "xxx";
    }

    public static class Http {
        public final static String HOST = "xx.xx.xx.x";
        public final static String PORT = "xxxx";
}