前文所说的待办清单APP,也是在不断地使用过程中。
有一天在使用的过程中,发现一个此前从未见过的问题,这天晚上我再次打开APP界面的时候,发现数据全部不见了,数据全部丢失了,此前添加的数据一条都不剩。
于是,对于此问题,陷入了深深的思考中。经过一番分析,觉得问题是数据的保存处理方式存在着漏洞,从而导致出现数据丢失的问题。
为了简化数据的存取问题,原来APP采用的是较为简单的延迟的数据保存方法。简单说来,就是在APP主Activity切换到暂停状态时,保存数据,在保存数据之前,将原数据库中所有的数据全部删除,以避免带来数据重复和不一致的问题。
这样的操作虽然使用起来更加方便简单,不需要做任何判断。Activity激活时,从数据库读取全部的数据,Activity暂停时,保存其中的全部数据,在保存之前,删除数据库中的全部数据。
虽然简单,但这种方法会带来数据可能丢失的问题。当激活Activity时,Activity能从数据库中读取全部数据,但是,因为某些特殊的情况,譬如用户进行了清理内存的操作,此时,就会导致Activity中缓存的数据全部被清理掉了,然后在保存时,又把数据库中原来的数据全部删除了,这种情况下,Activity中缓存的数据和数据库中数据全部被删除了,从而会导致数据全部丢失的问题。
改进后方法是,每当Activity数据发生变化时,便进行写数据库操作,一般情况下,不会导致丢失任何数据。另外在保存数据时,并不删除数据库已有的数据,只有在用户点击删除按钮时,才从数据库删除相应的数据,由此,数据库的数据也是一直都是存在的,除非用户自己进行了删除。由此,数据库的数据任何时候,都可以读进Activity,一般情况下,不会出现数据消失的情况。
改进后,一系列测试和使用操作,并未发现数据丢失的情况。
夜雨聆风