您的位置:首页 > 移动开发 > Android开发

Android必知必会--GreenDao缓存

2016-01-07 23:57 591 查看
Github版

CSDN版

本篇文章不是介绍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可以参考:

ORM 框架之 greenDAO 使用心得

GreenDao

PS:


你可以关注的我GithubCSDN微博

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: