如果您指定CachePolicy
,則數據將自動緩存在內部存儲上。默認的是CachePolicy.IGNORE_CACHE
,所以沒有數據被緩存。由於您有興趣從緩存中獲取結果,因此使用CachePolicy.CACHE_ELSE_NETWORK
會更有意義,因此查詢將首先在緩存中查找。您正在查找的數據將存儲在變量scoreList
中。
也許你很難理解你的代碼是如何工作的,因爲你使用的是回調(因爲findinBackground()
)。請看下面的代碼:
ParseQuery<Person> personParseQuery = new ParseQuery<Person>(Person.class);
personParseQuery.setCachePolicy(ParseQuery.CachePolicy.CACHE_ELSE_NETWORK);
personParseQuery.addAscendingOrder("sort_order");
List<Person> = personParseQuery.find();
正如你所看到的,查詢的結果是由find()
方法的返回。從Parse API文檔: public List<T> find() throws ParseException
- 檢索滿足此查詢的ParseObjects的列表。根據緩存策略使用網絡和/或緩存。
的Person
類可能是這樣的:
@ParseClassName("Person")
public class Person extends ParseObject {
public Person(){}
public String getPersonName() {
return getString("personName");
}
public void setPersonName(String personName) {
put("personName",personName);
}
}
,當然還有,別忘了先初始化解析和註冊Person
類:
Parse.initialize(this, "appID", "clientID");
ParseObject.registerSubclass(Person.class);
我希望我的解釋能幫你。
PS:通過查看data.data中的內容可以看到數據緩存。您的應用程序包+名稱.cache.com.parse文件夾在您的模擬器上執行代碼後。
嗨,你解決了這個問題嗎?我也一樣。 – Aashir