1. 程式人生 > >Android必知必會--GreenDao快取

Android必知必會--GreenDao快取

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

PS:

你可以關注的我GithubCSDN微博