前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android必知必会--GreenDao缓存

Android必知必会--GreenDao缓存

作者头像
他叫自己MR.张
发布2019-07-01 14:26:50
8890
发布2019-07-01 14:26:50
举报
文章被收录于专栏:Android必知必会Android必知必会

版权声明:本文为他叫自己Mr.张的原创文章,转载请注明出处,否则禁止转载。 https://cloud.tencent.com/developer/article/1453277

本篇文章不是介绍GreenDao的配置和基础使用,记录一下GreenDao缓存的问题,帮助遇到同样问题的朋友找到原因和方法,下面是示例:

场景重现

代码语言:javascript
复制
//第一次查询
List chats = daoSession.getChatSessionDao()
    .queryBuilder()
    .orderDesc(ChatSessionDao.Properties.Updatetime)
    .list();

//对数据库中的一条数据进行更新:
ChatSession cs = chats.get(0);
Log.d("body",cs.getBody());
cs.setBody(cs.getBody() + "new");
daoSession.getChatSessionDao().update(cs);

//第二次查询
List chats = daoSession.getChatSessionDao()
    .queryBuilder()
    .orderDesc(ChatSessionDao.Properties.Updatetime)
    .list();

Log.d("body",chats.get(0).getBody());

结果发现两次的body的值是一样的,使用工具查看Sqlite数据库,发现body的值已经变化了,也就是说,我们第二次查询并没有真正执行,返回的是第一次查询的结果。如果要解决缓存问题,这里就要用到DaoSession的一个方法:

代码语言:javascript
复制
DaoSession.clear();

在示例代码中应该写在第二次查询前面

代码语言:javascript
复制
daoSession.clear();
//第二次查询
......

PS:这个清理缓存的方法,会清除所有表的缓存,目前没有发现可以清除单个表或者某个查询的缓存的方法。

GreenDao配置与使用

GreenDao详细的配置和Demo可以参考:

  1. ORM 框架之 greenDAO 使用心得
  2. GreenDao

PS:

你可以关注的我GithubCSDN微博

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年01月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景重现
  • GreenDao配置与使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档