记录使用Dagger2+GreenDao时遇到的问题

今天遇到的问题

        账号A登陆后
        切换账号B后,书架内容展示的是A账号的内容,后续再退出登陆结果还是A的内容
        
        
        
    书架是一个fragment  书架内容通过greendao保存    
    项目使用dagger2注入的方式
    账号退出做了删除书架的db表,在登陆后greendao重新创建db表
    
    
    在排查后定位到可能是缓存问题,起初以为是dagger2中缓存了greendao  greendao一直使用缓存内容,因此不再使用注入的方式获取greendao的实例,而是进入fragment时重新创建greendao实例,也确实解决了问题
    
    但是后续思考应该不仅仅是dagger2的问题,因为做了删除db表的操作,所以greendao中持有的db仍然是删除的db表,因此会出现后续就算重新创建表格,在进入书架时dagger2缓存的fragment
    使用的仍然是第一次登录A中得到的db表,所以才会出现虽然db表中已经是最新的书籍了但是展示出来的仍然不对
    
    按照上述思路,继续进行对应修改:在退出账号时不删除db表,而是通知表格删除所有内容,db表文件跟后续账号登录使用同一个文件,切换账号后能书架能正常显示对应账号的内容

    综上总结: 1.dagger2中确实存在了对注入对象的缓存,在后续需要创建时应该会优先使用已创建的对象;2.在使用greendao时如果删除db表文件在后续使用时需要重新创建新实例操作数据库否则会无法获取到最新内容。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值