如何解决Tasks.await任务显示不适当的阻塞方法调用警告
我正在尝试通过我的代码通过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),我希望它同步返回。 但在以下行中:
Tasks.await(signOutTask)
它显示不正确的阻塞方法调用 感谢您的帮助!
解决方法
将Kotlin Coroutines与Google Play服务的API结合使用时,您应该使用kotlinx-coroutines-play-services
来正确完成工作,将Task
API转换为suspend
API,而不会阻塞线程: / p>
// 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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。