Kotlin中SharedPreferences的remove/clear方法失效问题排查
问题分析及解决方案
你的removeToken函数存在两处关键问题,导致token删除后仍能读取到有效值:
编辑会话使用错误,重复提交导致异常
SharedPreferences的Editor实例在调用commit()后,当前编辑会话的修改已提交到磁盘,继续复用该实例执行后续修改并再次提交不符合规范,可能导致后续操作失效,甚至干扰之前的删除逻辑。冗余操作引发逻辑冲突
你已经通过remove(USER_KEY)删除了目标token,后续又调用clear()清空整个SharedPreferences文件,两次提交的操作逻辑重复且可能冲突,反而影响删除操作的正确性。
修正后的removeToken函数
fun removeToken(context: ReactContext) { val storage = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) storage?.edit()?.apply { remove(USER_KEY) // 若需清空整个存储文件,可替换为clear(),二选一即可 commit() } }
额外排查点
- 确认读取token的逻辑是每次都从SharedPreferences重新获取,而非使用内存中缓存的旧值。
- 检查
PREF_NAME和USER_KEY常量值,确保设置、删除、读取token时使用的是同一组名称和键,避免因常量不一致操作了不同的存储项。
内容的提问来源于stack exchange,提问作者hong developer
相关产品推荐
相关产品推荐

