You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Amplify Android项目通过API Gateway读取DynamoDB数据异常求解

问题根因

你遇到的列表大小始终为0的问题,本质是异步执行时序问题:
Amplify.API.get() 是异步非阻塞方法,调用后会立刻返回,网络请求、成功/失败回调的执行都在后台线程延后执行。你在方法末尾打印ls.size()时,成功回调还没有被触发,自然还没有执行ls.add(rawData)的逻辑,所以列表始终是空的,这和你后端服务、接口返回是否正常没有关系。

解决方案

你需要通过回调机制,在网络请求成功拿到返回结果后,再执行列表操作、UI更新等后续逻辑,不要在接口调用后立刻处理数据。

1. 定义数据回调接口

public interface OnDataFetchedListener {
    void onSuccess(String rawData);
    void onFailure(Throwable error);
}

2. 改造getItems方法支持回调

void getItems(String epoch, OnDataFetchedListener listener) {
    RestOptions options = RestOptions.builder()
            .addPath("/items/" + epoch)
            .build();

    Amplify.API.get(options,
            restResponse -> {
                String rawData = restResponse.getData().asString();
                Log.i("RESTapiOperation", "GET succeeded: " + rawData);
                // 回调通知成功
                if (listener != null) {
                    listener.onSuccess(rawData);
                }
            },
            apiFailure -> {
                Log.e("RESTapiOperation", "GET failed: ", apiFailure);
                // 回调通知失败
                if (listener != null) {
                    listener.onFailure(apiFailure);
                }
            }
    );
}

3. 调用方法处理数据

如果后续需要把数据展示到界面上,注意Android的UI更新必须在主线程执行:

// 调用接口获取数据
getItems("你的epoch参数", new OnDataFetchedListener() {
    @Override
    public void onSuccess(String rawData) {
        // 这里才是数据返回后的执行时机
        ls.add(rawData);
        Log.i("Data Collection", "Size of list is " + ls.size());
        
        // 如果要更新UI,切到主线程
        runOnUiThread(() -> {
            // 这里更新列表控件、TextView等UI元素
        });
    }

    @Override
    public void onFailure(Throwable error) {
        // 处理请求失败的逻辑,比如弹Toast提示
    }
});

额外优化建议

  • 你拿到的rawData一般是JSON格式字符串,可以用Gson、FastJSON等工具直接解析成对应的实体类,方便后续字段读取,不用手动处理字符串。
  • 如果需要展示IoT设备的实时上报数据,不需要频繁轮询REST接口,可以改用Amplify的GraphQL API搭配DynamoDB Streams实现数据主动推送,延迟更低性能更好。

内容的提问来源于stack exchange,提问作者average_programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:15:02