我开始使用Android开发人员社区开发的新事物,其中之一是协程。我已经使用了LiveData 我假设它们在使用时也是生命周期安全的,那么为什么要引入协程以及它们与LiveData有何不同。我已经从开发者频道观看了YouTube上有关协程的视频,但我并不完全理解。暂停和恢复如何比LiveData更好地工作。
答案 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)
协程用于异步作业。实时数据用于更新您的数据视图(活动和片段)