本文主要是介绍再次探讨Android开发值得注意的规范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上一篇博客,我已经谈及一些有关Android开发值得注意的规范。在此基础上,来扩展探讨其他容易引发不规范编程的细节问题。
一、线程同步问题
很多时候,都需要开多个线程并发工作。但是,如果使用共享变量来实现线程之间通信,可能两个甚至多个线程同时访问某个变量,导致变量混乱引发死锁。为了实现线程同步,变量采用synchronized关键字作为同步锁。
用法如下-->
private Timer timer = null;
private void cancelNotification() {if (timer != null) {synchronized (timer) {...}}
}
二、捕获异常问题
执行一个方法可能会抛出多个异常,那么需要同时捕获这些异常并进行适当处理。这时会出现多个catch并行书写,显得不够简洁,可以把多个Exception采用或表达式写在一起。另外,catch里面最好进行恰当处理,比如使用log打印日志以便排查问题。最后,加上finally进行处理。
用法如下-->
try {... } catch (OutOfMemoryError | Exceptio e){Log.e("mError",e.toString()); }finally{... }
三、全局与局部我清晰地记得C语言老师多次强调:能够使用局部变量(private)就不要使用全局变量(public),尽量减少使用全局变量。同理,能够使用私有方法,就不要写成公有方法。能够写成本地变量,就没必要写成成员变量。四、if表达式if表达式用于条件语句判断,有时候可以简化,有时候没必要if{}与else{}成对出现。情景1:if表达式简化前-->简化后-->if (account.isExist()) {return false;}return true;
情景2:return !account.isExist;
if与else成对出现-->只需要if判断-->if(a == null){return; }else {... }
五、布尔表达式if(a != null){... }
众所周知,布尔表达式只有两个状态true和false,有时候return boolean值与结合if条件语句来写,可以直接使用布尔表达式更加简洁些。
情景1:boolean值与if语句结合-->直接使用布尔表达式-->if(a > b){return true; }else {return false; }
return a > b;
情景2:布尔变量与true/false比较-->直接使用布尔变量本身-->if(a == true){... }
if(a){... }
六、"HardCode"引用android studio很有意思,使用自带的lint静态代码检查时,可以检测出固定或指定(HardCode)代码片段引用,并且给出对应解决方法。
例如获取sd卡路径-->恰当用法-->public final static String DATA_URL = "/data/data/";
七、线性布局的权重public final static String DATA_URL = Context.getFileDir().getPath();
线性布局提供权重(weight)分配,如果在使用weight属性的情况下,高度或者宽度使用0dp代替wrap_content或者match_parent,性能会相对好些。weight与wrap_content结合使用-->weight与0dp结合使用-->android:layout_height="wrap_content" android:layout_weight="1"
android:layout_height="0dp" android:layout_weight="1"
八、cursor对象
需要从数据库查询数据时,通常是利用cursor对象进行数据查询。但是很多时候,cursor使用完毕忘记关闭它。此时,静态代码检测后会抛出missing recycle()calls这样提示。那么,我们需要调用close()方法释放cursor。九、注意view的重绘 在xml布局里面,我们往往会利用background属性自定义背景色。此时静态代码检测后会提示"OverDraw:Painting regoins more than one"。事实上,我们已经在AndroidManifest.xml文件配置过activity窗体布局的背景色。android:theme="@android:style/Theme.Light.NoTitleBar"。现在呢,在xml父布局又自定义背景色。android:background="@color/white"。这样就造成了view的重绘,影响app的性能。最后,我想说的是,本人编程初期也不注重开发规范。以上是我个人对开发规范的一些总结,如有错漏希望大家及时指出共同进步。我写下这篇博客初衷是,让自己更加注重开发规范,养成编写规范代码的习惯,以此自勉。同时,也共勉徘徊在不规范大门的同行,开发规范牢记于心,从细节做起,从现在做起。
这篇关于再次探讨Android开发值得注意的规范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!