Android必知必会--GreenDao缓存

标签: android缓存greendao
4674人阅读 评论(5) 收藏 举报
分类:

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

场景重现

//第一次查询
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的一个方法:

DaoSession.clear();

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

daoSession.clear();
//第二次查询
......

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

GreenDao配置与使用

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

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

PS:

你可以关注的我GithubCSDN微博

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:244220次
    • 积分:3061
    • 等级:
    • 排名:第12089名
    • 原创:62篇
    • 转载:8篇
    • 译文:3篇
    • 评论:131条
    博客专栏
    文章分类
    样式调整
    • 1. 优化正文标题区分强度
    • 2. 优化行内代码的显示样式
    • 3. 修复 Safari 浏览器下字体样式错误