Android Kotlin协同程序是什么,它们与实时数据有何不同
我开始使用Android开发者社区开发的新东西,其中之一是协同程序。我使用了LiveDataAndroid Kotlin协同程序是什么,它们与实时数据有何不同,android,kotlin,kotlin-coroutines,Android,Kotlin,Kotlin Coroutines,我开始使用Android开发者社区开发的新东西,其中之一是协同程序。我使用了LiveData 我假设在使用它们时,它们也是生命周期安全的,那么为什么引入协同路由,以及它们与LiveData的区别。我在Youtube上的开发者频道上看过这段视频,但我并不完全理解。挂起和恢复如何比LiveData工作得更好。好的,首先,协同程序实际上与LiveData没有太多关系,尽管它们可能在这里或那里共享一些概念。 协同路由用于执行异步操作:从网络、数据库等检索数据。 如果您在通道或流的上下文中进行讨论(我不建
我假设在使用它们时,它们也是生命周期安全的,那么为什么引入协同路由,以及它们与LiveData的区别。我在Youtube上的开发者频道上看过这段视频,但我并不完全理解。挂起和恢复如何比LiveData工作得更好。好的,首先,协同程序实际上与LiveData没有太多关系,尽管它们可能在这里或那里共享一些概念。 协同路由用于执行异步操作:从网络、数据库等检索数据。 如果您在通道或流的上下文中进行讨论(我不建议这样做,因为您将失去其中的生命周期),那么协同路由可以用作“LiveData”。使用协程,您可以轻松切换到线程
Suspend
函数只是保持的函数,不能直接运行。任何挂起函数都应该在一个协程中
我能给你的最简单的用例是:
runBlocking{
//you are inside of a coroutine
val data = getDataFromBackground()
}
suspend fun getDataFromBackground(): SomeDataType = receiveSomeData()
receiveSomeData
方法也标记有suspend
关键字
但当然还有很多
我也有一个关于合作的想法,你可能会发现在那里很容易
我能想到的只有一点,你可以用协程来替换数据,那就是使用通道。视图不会观察LiveData
,但会使用从频道提交的、与DI或其他东西创建和共享的值
编辑:
如果你真的想使用LiveData+协同程序,请检查Android团队的这一点 协同路由用于异步作业。实时数据用于更新您的视图(Activity&Fragment)“为什么引入协同程序”——Kotlin用于Android应用程序以外的其他应用程序
LiveData
是一款Android产品。“Suspend和Resume如何比LiveData更好”——它们既不是“更好”,也不是更糟。协同程序和LiveData
经常一起工作,就像RxJava和LiveData
经常一起工作一样。@commonware如果它们不是更好,那么为什么谷歌的开发人员在IO 2019中经常谈论它们呢正如我所写的,你可以将LiveData
和协同程序一起使用。