「这是我参与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";
}