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

时间:2019-07-10 12:34:49

标签: android kotlin kotlin-coroutines

我开始使用Android开发人员社区开发的新事物,其中之一是协程。我已经使用了LiveData 我假设它们在使用时也是生命周期安全的,那么为什么要引入协程以及它们与LiveData有何不同。我已经从开发者频道观看了YouTube上有关协程的视频,但我并不完全理解。暂停和恢复如何比LiveData更好地工作。

2 个答案:

答案 0 :(得分:2)

好吧,首先协程与LiveData的联系并不多,尽管它们可能在这里和那里共享一些概念。 协程用于执行异步操作:从网络,数据库等检索数据。 如果在通道或流的上下文中进行交谈,协程可以用作“ LiveData”。使用协程,您可以轻松切换到线程。

Suspend函数只是保留的函数,不能直接运行。任何暂停功能都应在协程内部。

我可以给您的最简单的用例是:

runBlocking{
 //you are inside of a coroutine
 val data = getDataFromBackground()
}

suspend fun getDataFromBackground(): SomeDataType = receiveSomeData()

receiveSomeData方法也用suspend关键字标记。

但是当然还有更多。 The documentation is perfect way to start

我也有一个关于协程的personal article,您可能会发现它们很容易。

我只能想到的一点是,您可以用协程替换数据,而这是使用通道。该视图将不会观察LiveData,但会使用从通道传来的值,与DI或其他对象创建和共享的值。

答案 1 :(得分:0)

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