什么是 Kotlin 协程,它们与实时数据有何不同



我开始使用由开发者社区Android开发的新东西,其中之一是协程。我使用过实时数据 我假设在使用它们时,它们也是生命周期安全的,那么为什么要引入协程以及它们与 LiveData 有何不同。我在 Youtube 的 Coroutines 上看过来自开发者频道的视频,但我并不完全理解。挂起和恢复如何比实时数据更好地工作。

好的,首先,协程与LiveData并没有太多关系,尽管它们可能在这里和那里共享一些概念。 协程用于执行异步操作:从网络、数据库等检索数据。 如果您在通道或流的上下文中交谈,协程可以用作"LiveData"(我不建议这样做,因为您将失去其中的生命周期)。使用协程,您可以轻松切换到线程。

Suspend函数只是保存而不直接运行的函数。任何挂起函数都应位于协程内。

我可以给你的最简单的用例是这样的:

runBlocking{
//you are inside of a coroutine
val data = getDataFromBackground()
}
suspend fun getDataFromBackground(): SomeDataType = receiveSomeData()

receiveSomeData方法也标有suspend关键字。

但当然还有更多。文档是完美的开始方式。

我也有一篇关于协程的个人文章,你可能会发现它们很容易。

我能想到的只有一点可以用协程替换数据,那就是使用通道。视图不会观察LiveData,但会使用来自频道的值,这些值是与 DI 或其他东西创建和共享的。

编辑: 如果你真的想使用 LiveData + 协程,请查看 Android 团队的这个很棒的库。

协程用于异步作业。实时数据用于更新您的视图(活动和片段)

最新更新