1. 实现功能
登录时需要支持用户修改IP功能,将用户输入的IP保存在MMKV中,利用饿汉单例模式方便后面调用
2.遇到的问题
当修改成功保存后立即登录,出现登录ip还是未修改之前的IP的情况
3.解决过程及思路
1、是不是没有保存成功
退出程序后,再次进入程序进行登录就是修改后的IP地址,说明保存成功了,这种情况排除
2、猜测是因为缓存问题
进行debug测试,发现调用方法处没有数据 为null(在单例模式初始化后调用),应该不是缓存问题,不然肯定还有未修改前的数据,根据此判断应该是没有数据没有被调用到
3、饿汉模式到底是什么时候初始化
是在我第一次调用前初始化 后面都不初始化 还是第一次调用时初始化 后面不初始化 这是我的疑问
4.最终的猜想
是因为饿汉式单例模式只有刚开始初始化一次 而这一次应该是我还未调用时就初始化了 虽然IP修改后是被保存了,但是在调用方法时获取的变量地址依然是原来数据存储的地址(因为后面没有初始化了)所以会出现重新进来程序就变成修改后,因为重新进来程序就等于又初始化了一次单例模式 自然是最新的数据存储
5.解决方式
可以在首次调用时,刷新一下存储(直接调用改变后的内部存储),之前的变量是访问改变前的内部存储