我是内容丰富的新手,我编写了一个Android应用程序,它使用内容传递API从我的空间中获取内容。
我使用了Vault和普通API(没有保险库)来获取内容。
我发现获取增量更改(新内容和更新内容)总是有3-5秒的延迟。
我的要求是提供实时数据同步。
这是我的实施问题还是来自内容的预期行为。
示例代码: 1.使用Vault
Vault.with(App.getInstance(), SampleSpace.class).requestSync(
SyncConfig.builder()
.setClient(ClientProvider.get())
.setInvalidate(false)
.build());
List<SampleTable> appointments = Vault.with(App.getInstance(), SampleSpace.class)
.fetch(SampleTable.class)
.where(SampleTable$Fields.DATE+"=?", mDateToCheck)
.all();
普通API
private final CDAClient client = CDAClient.builder().setToken(CDA_TOKEN).setSpace(SPACE_ID).build();
client.observe(CDAEntry.class).all()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Action1<CDAArray>() {
@Override
public void call(CDAArray entries) {
//business logic here
}});
感谢您的时间和帮助!!
答案 0 :(得分:0)
我是Contentful中Java和Android SDK的维护者。
可能有一些原因导致经济放缓:
1)您有syncing
个大量数据
这意味着,许多数据,甚至可能是不同的页面都必须从Contentful中获取,解析,序列化并放入Vault案例中的数据库中。
在这种情况下,看看通过id获取条目而不使用同步可能是一个想法。遗憾的是,你会失去Vault模型类的优点,并且需要自己实现从Contentful模型到自定义模型的映射。
2)ClassLoader.getResources
在您的代码段中,您每次同步调用都会重新创建CDAClient
或Vault
。这在Android上有known issue,我们正在努力修复它。
目前,在更新结束之前,建议尝试查看在字段中存储Vault
和/或CDAClient
是否有助于后续调用。
3)网络缓慢
可悲的是,这意味着,我们无法从我们这边做任何事情......;)
我希望这能为您提供一些指导,在解决方案上,请随时报告您遇到的任何进展。
答案 1 :(得分:0)
我发现此问题的唯一解决方案是使用Contentful Preview API。 因此,当某个对象被修改/删除/创建时,响应速度将是相同的。话虽这么说,用户可以在app / web中获得一秒或更短时间内的每次更新。
问题是应用程序将显示已发布或未发布的条目(草稿),因此它取决于项目需求。
如果用户需要使用此解决方案,他必须使用Contentful中API顶部面板部分中的内容预览API - 访问令牌。我希望它有所帮助!