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
}
我正在尝试通过我的代码中的 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
}