再次探讨Android开发值得注意的规范
来源:互联网 发布:管家婆软件安装步骤 编辑:程序博客网 时间:2024/04/29 03:29
上一篇博客,我已经谈及一些有关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;简化后-->return !account.isExist;情景2:if与else成对出现-->if(a == null){ return;}else { ...}只需要if判断-->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结合使用-->android:layout_height="wrap_content"android:layout_weight="1"weight与0dp结合使用-->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的性能。最后,我想说的是,本人编程初期也不注重开发规范。以上是我个人对开发规范的一些总结,如有错漏希望大家及时指出共同进步。我写下这篇博客初衷是,让自己更加注重开发规范,养成编写规范代码的习惯,以此自勉。同时,也共勉徘徊在不规范大门的同行,开发规范牢记于心,从细节做起,从现在做起。
0 0
- 再次探讨Android开发值得注意的规范
- 探讨Android开发值得注意的规范
- 值得你学习的 Android 开发规范
- 值得你学习的 Android 开发规范
- Android 开发应该注意的编程规范
- java中一些值得注意的命名规范
- 阿里巴巴java规范检测值得注意的项总结
- Android开发的探讨
- android Application值得注意的几个地方
- android socket 编程 值得注意的地方
- JS 规范问题(值得注意)
- 需要注意的开发规范和习惯
- 值得注意的地方
- 值得注意的append
- cocosbuilder 游戏动画开发利器-值得注意的几个细节
- 游戏服务器开发中的一点值得注意的地方
- 【JDBC开发】JDBC一些值得注意的细节问题
- Android EditText的使用及值得注意的地方
- CGI简介——用C来写CGI程序简要指南
- 操作系统 testface
- 在centos7上安装docker1.12
- GitHub上Android框架Top10
- SSH中一个form有多个按钮情况处理
- 再次探讨Android开发值得注意的规范
- 136. Single Number
- Linux学习笔记(一):指令
- node.js events(EventEmitter对象)
- Edit Ubuntu 16.04 bootloader GRUB
- TreeSet的带comparator的构造方法
- ChannelNotifyOutputData
- 保留两位小数四种方法:String.format(),BigDecimal.setScale(),NumberFormat.format(),DecimalFormat.format()详解
- NGUI自动设置 Panel 深度、自动设置UIWidget(Sprite/Label等)深度(按照Hierarchy 顺序从上到下 Depth 递增)