总述
彼时刚入职不久,职场小白一枚,现在看看这些bug总结,其实很简单,所以比较适合新人阅读~
1.采用"yes".equalsIgnoreCase(user.privateAccount)的写法:将常量str放在前面,调用它的equals方法,这样可以避免在后面str为null时的空指针问题。
彼时刚入职不久,职场小白一枚,现在看看这些bug总结,其实很简单,所以比较适合新人阅读~
1.采用"yes".equalsIgnoreCase(user.privateAccount)的写法:将常量str放在前面,调用它的equals方法,这样可以避免在后面str为null时的空指针问题。
2.语言多版本控制:文案要问PM要,其他语言版本也要问PM要,不要自己百度翻译~是的,不要自己翻译
3.与后端数据交互时,参数类型最好用string型。用户id若使用int型,在用户数大时会有溢出风险,最好使用long或string型。
4.数据传递时,要记得两端数据类型一致,若原为long型,用了int型接收,不会报错但会使数据受损。
5.统一的命名习惯,变量名,类名等,有利于快速熟悉代码及以后的版本迭代。
follow_id:带下划线的形式多用于json中键值对的键,xml中控件命名,数据库中列表项命名。。。
followId:这种就用于java代码中常规变量的命名,比如控件名。
6.功能在有些手机上正常有些手机上会崩,要考虑到是不是调用到了限制了最低API的方法,这样就与Android系统的版本有关了。所以在使用某些API方法或三方库方法时要注意他们支持的最低API。
7.有关软键盘的知识。跳转后,软键盘重复呼起与隐藏:对ListView用了wrap_content,而windowSoftInputMode使用的默认设置,所以会不断的自我调整位置,才触发这个现象。解决就是将显示tips的TextView放入Item布局中,这样ListView就可以使用match_parent,只需在Adapter内部中加入显示条件就好。
8.用户反馈粤语版本出现中英文混杂,原因是提交代码时粤语文案被冲掉了。所以当使用Git进行版本管理,在本地代码提交时,strings.xml文件一定要手动merge。
9.调试一个Activity类,一步步调试就是进不了方法内部看执行情况,然后又有这样的提示:
no such instance field : ‘XXX’。但是这个变量是真真存在且有值的,google上有说重启AndroidStudio就好,意思是AndroidStudio引用了之前版本的文件,不是代码的问题,然后好了。晕~
10.应用中使用了多进程时,Activity跳转可能会产生进程间的跳转,此时对于携带的参数,若序列化了没有问题可正常访问到,若没有非序列化,由于进程间内存独立,就会访问失败。
11.在Android中,一共有四种跨进程通信的方式,分别是通过Activity、BroadcastReceiver、ContentProvider和 AIDL(Android Interface Definition Language)。
12.在做需求之前一定要先清楚是基于哪个分支开发;提交代码时也要看清是提交到哪个分支上;合并分支更得慎重,一般先将主分支合并到自己分支上,没有问题了再合并回主分支。
13.不小心根据代码联想挑错了onCreate方法,导致activity 跳转正常,但界面空白。换回正常的onCreate方法就好了,至于两者区别,待查阅。
14.Activity需要注册,没有使用注解就直接注册XXX.class,使用了注解就可以注册XXX_.class。注解就是Annotation三方库。
15.报了一个错:Execution failed for task XXX ,这是因为在string文件中特殊字符要转义,如下:
16.写功能时,要充分考虑好正常情况,错误情况和边界情况这三种情形。
17.根据服务返回结果进行用户提示时,要判断有哪些可能的返回结果,针对这些结果有怎样的处理。一般从服务端返回有两种常用类型,一是code,一是msg,在返回错误信息时最好使用msg,建议直接toast给用户,客户端不用再做判断。
18.记录第一个线上crash。做迭代,没有将所有需要迭代的地方找全,但又直接改了统一使用的基础View,还木有做容错。当时情况是基础View中传入一个listener,没有非空判断直接使用,然后app就直接空指针crash了。当时的处理是使用前先判空,或加上try—catch块,发修复包。
总结:修改基础性控件时,一定要先保证支持之前的功能,再将需要迭代的地方找全,对于使用了注解的,不仅要看XXX的使用地方,还要看XXX_的使用地方。当然,容错处理也是必须的。