一、问题说明
一般在 App 启动页面会倒计时两三秒的时间后执行相应的导航操作(跳转主页面或用户登陆页面),执行导航的依据是什么呢,是本地存储的 token,如果有 token 且未过期的话就跳转 home,否则跳转登陆。我的本地存储用的是 flustars 插件的 SpUtil,前期只用到存储 token、获取 token、跳转导航等功能时都非常正常。
问题出在之后添加的一个功能需要在倒计时之前判断用户是否同意过 App 协议,而这个协议同意与否的状态是存储于本地的,与前者的区别在于倒计时前的判断还是一进入页面时的判断。倒计时后判断没有任何问题,如果是倒计时前判断的话,不仅无法获取本地存储的状态,还会把这个状态清除掉。当时也是比较纳闷,为什么 token 可以获取到,而这个状态就无法获取得到呢 ? 经过一系列排查发现存在这个问题。
二、解决方案
感觉可能是因为这个类需要异步初始化,导致前期未初始化前不可调用其 API,必须倒计时一段时间后再调用。