在Android开发的过程中,有哪些坑是值得你放在checklist中警示自己的?

通常我们会将经常遇到的问题、容易犯错的地方都放在一个checklist中,说说在Android开发过程中有哪些问题值得你放在自己的checklist中。 举例说明: 检查项:是否调用了类的finalize方法作为释放与类相关的资源? 可能存在问题:类的finalize方法的调用时机由系统而定,不能准确知道调用时机,可能会导致程序在使用过程中的异常。 解决方案:将与类释放资源相关的操作封装成一个共有方法供外部使用,而不是调用类的finalize方法…
关注者
1031
被浏览
13272

14 个回答

1导入的类库需要和项目在同级目录下,谨防资源文件与类库中冲突
2textviewsetText为int时候,textview的color代码设置,set/getTextSize 单位问题
3json 属性节点不能有空格
4asset下使用第三方字体 xx.ttf 必须都为小写
5listView自定义adapter中复用holder时候,如果view/checkbox等对应不同状态显示不同的图片,切记情况写全,不然会出现错乱问题。
6做上传时候记得问问服务端是否限制了上传文件大小
7context/getApplicationContext,视你是否需要涉及到ui时候选择合适的context
8存在复用时候,尽量new对象等操作移到复用之外,以防oom
9数据库操作加锁
10用Activity来显示出的dialog,popupwindow等控件需要在Activity关闭时候(之前也给关了)
11toast,判断是否格式(为空等)封装
12ui布局在多机型上的测试
13new handler时候尽量写在紧跟其他控件的获取之后,防止空指针
14context.startActivity();要intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
15针对一些特定的只能为数字的editText 设置软键盘类型为数字,为用户节省切换这一步骤。edittext.setInputType(EditorInfo.TYPE_CLASS_PHONE);
16armeabi-v7a
17监听键盘输入会有两次:(一次up 一次down)
18 不同类型的资源文件最好不要重名,不然会偶尔发现空指针,eclipse会抽,找成另一控件
19AlarmManager PendingIntent 这玩意在miui 不管用。。。。
20部分系统 datepickdialog 的onDateSet 执行两次
21fragment startActivityForResult 回调
部分经验:
1.如果代码需要做混淆,请注意接口类、接口方法和反射要调的类和方法不要混淆,可以照着Activity等四大组件如何不混淆去做
2.数据库的版本控制好,并且数据库的周期方法(create、update)不要调用getReadableDatabase或者getWriteableDatabase 方法,因为这些方法会继续调用onCreate方法造成递归调用错误
3.通话记录是按手机时间来排序的,所以如果你把时间调到一个很久远的时间(比如2年以后),那你拿到的第一条记录永远是你调到正常时间之前的那个记录
4.子线程不要操作ui,包括但不限于各个view组件、dialog、toast等
5.R文件不能生成基本都是xml有错误,仔细检查
6.高版本(具体忘了)禁用应用通知时(设置里的勾选),toast也无法显示,注意不要乌龙了。
类似的还有使用安全软件禁用联网或者某个组件,导致无法监听到事件或者无法联网,也很折磨人
7.小米的闹钟会间隔5分钟发出(即本来定于28和29的可能都会在30一起出现),在此周期(5分钟,实验得出的,没有代码支持)定时的闹钟会一起响应。
8.service的onstart里的返回值需要注意,如果是默认值(默认值是service被杀系统自动择机启动),在内存紧张的手机上会频繁重启(一秒十几次很正常),而如果你还在里面启动了某些任务,比如联网,会浪费很多流量

// 继续更新一些想起来的
9.图片资源名称不要以a开头,尤其a+数字,比如avator01等,很多情况下会出现显示不了的情况,大概记得是android自身的资源会使用a开头来命名,遇到了不妨试试改名,不然真会死人。

部分实际遇到的状况,限于测试机型不多,可能有误的地方请指出。
为什么?