展开全部
对于Android程序员来说平时开发Android应用很多地方需要我们注意,下面是Android123通过浏览大部分源码易的地方。
一、数据库的Cursor
对于Android SQLite数据库封装的查询返回对象Cursor来说比较容易出错的有
1. Cursor返回可能为null。
如果query返回的Cursor对象为空,执行cursor的任何方法肯定有空指针异常了,这点Android的代码有40%都没有注意到。
2. Cursor返回为0。
我们仅仅判断不为空还不行,如果Cursor的对象为0,执行了moveToFirst(); 这样的方法就比较尴尬了,这点Android开发网格外提示大家注意。
3. 遍历Cursor时没有执行moveToFirst(),这样游标的位置就不确定了。
4. Cursor使用完后要手动关闭,cursor.close()这个方法不要忘记了。
5. Cursor的类型获取,比如说getInt和getLong,由于在SQLite中boolean和long型均为SQLite的Integer所以,读取时一定记住转换。
二、新建的service、activity没有在androidmanifest.xml中注册,对于activity还好说,如果是service同时service使用的package name和主程序的package name有出入还记得手动写上相对的包名
三、Parcelable使用时内部类的异常处理,比如内部存储Bitmap对象时,如果Bitmap对象为空就会出现问题了。
一、数据库的Cursor
对于Android SQLite数据库封装的查询返回对象Cursor来说比较容易出错的有
1. Cursor返回可能为null。
如果query返回的Cursor对象为空,执行cursor的任何方法肯定有空指针异常了,这点Android的代码有40%都没有注意到。
2. Cursor返回为0。
我们仅仅判断不为空还不行,如果Cursor的对象为0,执行了moveToFirst(); 这样的方法就比较尴尬了,这点Android开发网格外提示大家注意。
3. 遍历Cursor时没有执行moveToFirst(),这样游标的位置就不确定了。
4. Cursor使用完后要手动关闭,cursor.close()这个方法不要忘记了。
5. Cursor的类型获取,比如说getInt和getLong,由于在SQLite中boolean和long型均为SQLite的Integer所以,读取时一定记住转换。
二、新建的service、activity没有在androidmanifest.xml中注册,对于activity还好说,如果是service同时service使用的package name和主程序的package name有出入还记得手动写上相对的包名
三、Parcelable使用时内部类的异常处理,比如内部存储Bitmap对象时,如果Bitmap对象为空就会出现问题了。
追问
太专业了
不过我是新手,能简单点说吗,有没有解决的办法???
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询