如果您指定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