这两天做需求的时候,有个列表用RecycleView展示,结果一直有问题,时而能展示,时而不展示,因为用到了LiveData来传递数据调用,发现LiveData分发一直为true,直接return掉了,并没有分发出去,一般是遇到异常的情况导致分发流程没走完,mDispatchingValue未能置为false
行吧,接着debug,因为是rxjava+retrofit的框架,请求回来后的操作中发生异常不会崩溃,只能一步步debug,但始终找不到具体崩溃的地方,只能一步步缩小范围,最终发现是在对列表数据做处理的方法中出现了异常,预设的一个List数据是用Gson转化Json而来的,接着会用这个List数据随机取里面的element去进一步处理,这里用到了扩展函数,直接 .random()来随机取数,这里的套娃逻辑debug其实不好定位,直接又套了一层try-catch才抓到,nullexception。。。这个List数据本来预设是7个数据,没想到里面塞了8个,有一个是null element,没说的了,肯定是Gson转换Json出了问题,一点点的对比,查找,终于发现最后一个object带了一个逗号。。。导致解析出来多了null数据,吐血,整了一天人都麻了,小细节真的容易搞大新闻,大家引以为戒