在写一个项目的注册模块的时候,发现问题如下:
当第一次注册失败的时候,修改注册信息,重新点击注册,返回的依然是注册失败信息。图如下:
第一次注册失败:
第二次修改信息后:
debug思路:
1.使用了AsyncTask,会不会是多次调用了execute()方法导致的?
debug做法:
进行条件判断,如果task实例不为null,则先设置为null,再重新初始化
。用Log打印hashcode进行检测。问题没有解决:
log打印信息显示每次的task实例都有变化,但问题依旧存在。第一种思路宣布死亡。
2.取消注册成功后自动跳转activity的操作,观察注册成功后重新点击注册的的效果,显示注册失败,说明服务端没有问题。问题在客户端
3.debug思路 -》注册成功再点击,失败 。注册失败后修改信息再点击,还是失败 —-》传递的参数是否有问题
监测方法:用的是post方法通讯,在HttpUtils用Log打印三次不同的注册信息:发现三次打印出来的都是一样的。找到问题:
查看HttpUtils代码:
在这里,发现用的是Arraylist存储的参数,但使用的时候用了Arraylist.get(int)方法,意思为不管我王Arraylist里面存了多少个数据,每次作为参数传递的都只是前4个,(第一个参数定义了http传输方法)。于是,修改代码如下:
重新运行,问题解决。
思考:从这次debug可以发现,自身的基础仍是不够牢固,犯下了一个很是低级的错误,虽然最后是把问题解决了,但你永远不知道下一个bug在什么时候到来,祈祷吧。吸取经验,这个错误,下次不能再犯。同时,关于那些很难察觉的小坑,要多加思考和训练,最好及时避免。