gpt4 book ai didi

android - Task.await() 主线程安全吗?

转载 作者:行者123 更新时间:2023-12-05 00:15:28 26 4
gpt4 key购买 nike

我正在编写我的第一个 Kotlin 应用程序,并使用 firebase 服务进行身份验证、数据库和存储。由于不可能进行原子 Firestore + Storage 操作,因此我发现自己退出了简单图像上传的回调 hell (带有错误回退等)。因此 - 我决定重构我的应用程序以使用协程。我找到了一些示例(例如 herehere ),但我注意到这些示例中的存储库级函数没有用 withContext(Dispatchers.IO){ } 包装。如 android docs 所示。他们应该吗?我想这是两个问题合而为一:

  1. 是否应始终使用 IO 调度程序调用 Firebase 操作?
  2. kotlinx-coroutines-play-servicesTask<T>.await()主安全?

还有一个额外的问题:我将所有 Firebase 调用包装在代理对象中以进行解耦 - 有没有办法将对象(/类)的所有函数设置为在相同的上下文中运行,或者我是否必须包装每个函数函数 withContext(Dispatchers.IO){ }分开吗?

非常感谢!

最佳答案

  1. Should Firebase operations always be called with the IO dispatcher?

除非 API 文档中另有说明,所有 Firebase API 都是异步的,并且旨在从主线程安全地调用。

  1. Is kotlinx-coroutines-play-services's Task.await() main-safe?

是的。作为API documentation状态(强调我的):

Awaits for completion of the task without blocking a thread.

这是一个挂起的乐趣,而且它们不会阻塞。然而,它们在协程之外调用并没有真正的意义。

关于android - Task<T>.await() 主线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66430400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com