在测试代码的时候,发现更新数据没有显示出来,第一反应是去单独拉了下Api,也就确定了Api返回的数据是正确的,而显示的数据是经:
1.Api获取,解析; 2.通过Room的Insert方法插入数据, 3.通过Room的Query查询获取到数据来显示,逻辑一切正常。
###因为显示不正常:
第一步:检查 @Query 获取的数据是否正常,此时数据获取是正常的,但是我发现本地数据库数据是没有更新,即本地数据有问题;
第二步:检查 @Insert 插入的数据源是否正常,因为数据源是正确的,即获解析的数据没有问题;
第三步:由上一步得出的结论是:Insert 方法写的有问题,然后去检查发现没什么问题了,为此我还特意去记录了 @Insert 的简单使用,有兴趣可以去看下这篇文章: Room- @Insert
第四步:因为 Insert 方法没问题,然后只能去一行一行的干代码了,看看究竟在执行过程中遇到了什么,然后突然在一组测试数据中发现了一个报错,没错,是有代码报错了:
>>>
2021-01-17 11:55:56.701 5131-5245/com.***.***.dev W/System.err:
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
NullPointerException!!!然后就没有然后了 !!!不还有,
第五步:定位到该行去添加判断,防止报空指针异常。
补充:
看结果很简单理解,写了一个空指针异常的代码,但是吧,这个地方为什么经过了很久都没发现了,以为在正常数据下是不会有 [null] 返回的,那组数据来的真的很及时,这里报错后,后面的Insert 方法就不再执行了。
当然,这也让我去熟悉了 Room- @Insert !