延迟将DELTA更改与android

时间:2017-09-22 05:55:58

标签: android content-management-system contentful

我是内容丰富的新手,我编写了一个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();
  1. 普通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
      }});
    
  2. 感谢您的时间和帮助!!

2 个答案:

答案 0 :(得分:0)

我是Contentful中Java和Android SDK的维护者。

可能有一些原因导致经济放缓:

1)您有syncing个大量数据

这意味着,许多数据,甚至可能是不同的页面都必须从Contentful中获取,解析,序列化并放入Vault案例中的数据库中。

在这种情况下,看看通过id获取条目而不使用同步可能是一个想法。遗憾的是,你会失去Vault模型类的优点,并且需要自己实现从Contentful模型到自定义模型的映射。

2)ClassLoader.getResources

在您的代码段中,您每次同步调用都会重新创建CDAClientVault。这在Android上有known issue,我们正在努力修复它。

目前,在更新结束之前,建议尝试查看在字段中存储Vault和/或CDAClient是否有助于后续调用。

3)网络缓慢

可悲的是,这意味着,我们无法从我们这边做任何事情......;)

我希望这能为您提供一些指导,在解决方案上,请随时报告您遇到的任何进展。

答案 1 :(得分:0)

我发现此问题的唯一解决方案是使用Contentful Preview API。 因此,当某个对象被修改/删除/创建时,响应速度将是相同的。话虽这么说,用户可以在app / web中获得一秒或更短时间内的每次更新。

问题是应用程序将显示已发布或未发布的条目(草稿),因此它取决于项目需求。

如果用户需要使用此解决方案,他必须使用Contentful中API顶部面板部分中的内容预览API - 访问令牌。我希望它有所帮助!