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

AWS Amplify v2.3.0 Android协程版query函数参数缺失问题求助

问题原因及解决方案

在AWS Amplify v2.3.0中,你遇到的协程版query调用提示缺少参数的问题,核心原因是你调用的是回调风格的query重载方法,而非协程挂起函数版本,同时需要确保依赖和导入配置正确。

1. 检查依赖配置

确保项目中已添加Amplify Kotlin核心依赖(若之前仅引入Java版Amplify),在模块级build.gradle(或build.gradle.kts)中添加:

// Groovy语法
implementation 'com.amplifyframework:amplify-kotlin:2.3.0'

// Kotlin DSL语法
implementation("com.amplifyframework:amplify-kotlin:2.3.0")

2. 导入正确的Amplify Kotlin包

确保代码中导入Kotlin版Amplify,而非Java版:

import com.amplifyframework.kotlin.core.Amplify

3. 正确的协程版查询代码

修正后的协程版代码如下,同时注意挂起函数必须在协程作用域内调用(比如Android中使用lifecycleScope.launch、viewModelScope.launch等):

import com.amplifyframework.kotlin.core.Amplify
import com.amplifyframework.api.graphql.model.ModelQuery
import com.amplifyframework.api.ApiException
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext

suspend fun getTodo(id: String) {
    // 可选:切换到IO线程执行网络请求,避免阻塞主线程
    withContext(Dispatchers.IO) {
        try {
            val response = Amplify.API.query(ModelQuery.get(Todo::class.java, id))
            response.data?.let { todo ->
                Log.i("MyAmplifyApp", "Query results = ${todo.name}")
            } ?: Log.w("MyAmplifyApp", "No Todo found with id: $id")
        } catch (error: ApiException) {
            Log.e("MyAmplifyApp", "Query failed", error)
        }
    }
}

// 调用示例(在Android生命周期作用域中)
// lifecycleScope.launch {
//     getTodo("your-todo-id")
// }

回调版可运行的原因

回调版调用的是query的Java风格重载,接受成功/失败回调参数;而协程版需要使用Kotlin扩展提供的挂起函数重载,两者方法签名不同,直接照搬回调版的参数列表会导致参数不匹配错误。

内容的提问来源于stack exchange,提问作者Dani Castaño

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:12:43