Tasks.await(task) 显示不适当的阻止方法调用警告

Tasks.await(task) shows Inappropriate blocking method call warning

我正在尝试通过我的代码中的 Google 执行注销:

suspend fun signOut(context: Context): Boolean = with(Dispatchers.IO) {
    try {
        val signOutTask = GoogleSignIn.getClient(context, 
        getGoogleSignInOptionsBuilder()).signOut()
        Tasks.await(signOutTask)
        true
    } catch (e: ExecutionException) {
        false
    } catch (e: InterruptedException) {
        false
    }
}

signOutTask 是 Task(Void),我希望它同步 return。 但在下一行:

Tasks.await(signOutTask)

显示不适当的阻塞方法调用 感谢您的帮助!

将 Kotlin 协程与 Google Play 服务的 API 一起使用时,您应该使用 kotlinx-coroutines-play-services 来正确转换 Task API 进入 suspend APIs 而不会阻塞您的线程:

// In your dependencies block of your build.gradle
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.3.9"

这让您可以将代码编写为:

suspend fun signOut(context: Context): Boolean = try {
    val signOutTask = GoogleSignIn.getClient(context,
         getGoogleSignInOptionsBuilder()).signOut()
    signOutTask.await()
    true
} catch (e: Exception) {
    false
}