其实导致这个现象的原因是因为GreenDao内部实现了缓存功能有关,当使用GreenDao去查询数据库数据时,如果当前查询条件和上次的查询条件一致时,GreenDao会直接去使用缓存在内存中的数据(提高了响应速度),这就导致会出现如标题所描述的“问题”。
如果不想使用该缓存功能,可使用xxxDao对象的 detachAll() 方法来清除缓存,也就是说,在这之后再调用查询时,就会去sqlite数据中去取数据了
xxxDao.detachAll();
xxxDao.queryBuilder()
.where()
...
.list();
关于 detachAll()
/**
* Detaches all entities (of type T) from the identity scope (session). Subsequent query results won't return any
* previously loaded objects.
* 后续查询结果不会返回任何先前加载的对象
*/
public void detachAll() {
if (identityScope != null) {
identityScope.clear();
}
}