大家看到这个题目,不要想歪哦,人家还没有结婚呢,这是一款开发的Android应用,中文名称为“宝贝成长记录”,简介请看http://www.androidzoom.com/android_applications/health_and_fitness/baby-care_oorr.html

以前的版本发布记录就不用介绍了,这个寒假注定又是繁忙的一个假期,想把几本书看完都没有时间,白天写代码,晚上加班看看书,今天注定是一个不平凡的一天,天气格外冷,开着暖气的实验室,都觉得丝丝凉意,可想而知外面有多冷了。

本来花了几天的时间,修改了喂养事件的处理过程,添加了选择食物的对话框:

2011-01-03 19-19-41

并且可以在喂养的过程随时,修改食物种类,并修改开始时间和结束时间,这个需要改动的地方比较大,中间出了很多异常~~

今天上午发布了,刚放到Market上没多久,就有用户邮件反应从1.0.6升级到1.0.7后,以前的数据库数据丢失了,是么???这个问题可是比较严重,由于数据网络同步的功能还没有实现,现在的解决方案是把整个数据库以文件的方式保存到SD卡上,万一数据用户要是没有备份,这损失就大了,记录了多天的数据消失了,这个是比较忌讳的。

首先亲测一般,果然!!!怎么会这样呢,没有改动数据库啊,不敢多想,首先把Market上的应用撤下来,然后找出出现问题的原因,顾不上天气的寒冷,虽然手指已经有些不那么灵活了,也顾不上晚饭了,经过一番调试,原来上个版本中SharePreference中没有保存baby id,结果导致读取出来的id为0,然后查询不到baby信息,就提示第一次使用,用户又添加了baby信息,SharePreference中记录的baby id也更新为2了,用户看不到以前的事件记录,我知道以前的数据没有丢失,因此就有恢复的可能,确定解决方案:通过数据库升级,删除所有表中baby id为2的记录,在判断是不是第一次使用的地方,babyID = sharedData.getInt(BabyCare.BABY_ID, 0);改为sharedData.getInt(BabyCare.BABY_ID, 1);//我知道第一次存的id一定是1,第二次为2,当前我们这个版本为了降低难度,减少复杂性,只记录一个baby的信息,然后修改SharePreference保存的baby id。

多次测试,从1.0.6->1.0.8,,1.0.6->1.0.7->1.0.8,1.0.7版本中导致的错误,通过1.0.8中的解决方案处理后,以前的数据又显示出来了,终于松了一口气,重新发布1.0.8版本 悲伤,接下来就该给用户回邮件致歉,并提示更新到1.0.8版本了。

 OK,幸亏不是很复杂,要不然又惨了,收工!

总结:

出现这个问题的原因:测试的时候想着没有修改数据库,所以就忽略了升级是否正常的测试。

唉,工作了可不能出现这样的问题了,要不不仅挨骂不说,自己也要惊恐一番,紧张的调试,找出bug,然后修复….