gpt4 book ai didi

java - 使用解析服务进行缓存

转载 作者:行者123 更新时间:2023-11-29 21:22:37 25 4
gpt4 key购买 nike

我在尝试从 Parse.com 缓存数据时遇到问题。

我一直在阅读 Parse API for caching ,但我仍然无法理解它。如何提取数据和缓存?

query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> scoreList, ParseException e) {
if (e == null) {
// Results were successfully found, looking first on the
// network and then on disk.
} else {
// The network was inaccessible and we have no cached data
// for this query.
}
});

最佳答案

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

当然,不要忘记先初始化 Parse 并注册 Person类:

Parse.initialize(this, "appID", "clientID");
ParseObject.registerSubclass(Person.class);

希望我的解释能帮到你。

PS:你可以通过查看data.data内部来看到数据被缓存了。执行代码后,您的应用程序包+名称 .cache.com.parse 文件夹在您的模拟器上。

关于java - 使用解析服务进行缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20555047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com