Android必知必會--GreenDao快取
阿新 • • 發佈:2019-01-27
本篇文章不是介紹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: