使用Android SMP SDK数据请求离线数据非常慢

时间:2017-04-26 11:43:58

标签: android offlineapps sap-smp

我们正在使用SAP Mobile Platform SDK 3.0 SP14实施原生Android应用。该应用程序具有多个脱机存储,用于在设备上本地保存主数据。只会请求数据,没有提取,因为数据不会在设备上更改。每个商店都有相同的,简单的实体类型,包含4个字段。最后一个是String字段,最多可包含150个字符。 要访问商店中的离线数据,应用程序会立即选择所有数据。但是这个要求非常慢(每秒约1,000件)。我们最大的商店有500,000件商品,所以要求这家商店的持续时间为500秒。 有没有办法加快大型离线商店的请求?

if (offlineStore != null) {
        try {
            //Define the resource path
            String resourcePath = format("%1$s",
                        StoreDefinitions.Data.ENTITY_SET_NAME);

            ODataRequestParamSingle request = new ODataRequestParamSingleDefaultImpl();
            request.setMode(ODataRequestParamSingle.Mode.Read);
            request.setResourcePath(resourcePath);
            //Send a request to read the travel agencies from the local database
            ODataResponseSingle response;

            // executeReadEntitySet: poor performance
            response = offlineStore.executeReadEntitySet(resourcePath, null);
...

1 个答案:

答案 0 :(得分:0)

您可以将OData过滤器和分页选项与SMP SDK中的脱机存储API一起使用,就像使用OData v2 Web服务一样。例如,您可以在resourcePath字符串中添加“$ filter = property1 eq'value'”,这与SQL查询中的WHERE子句具有相同的效果。对于分页,您可以将$ top和$ skip选项与脱机存储查询一起使用。

如果您需要使用SMP 3.0 SDK一次实际访问500,000个项目,我担心没有好办法加快本地访问速度。但它确实提出了一个更大的问题,即为什么要尝试在移动设备上访问如此大量的项目?