Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin协同程序是什么,它们与实时数据有何不同_Android_Kotlin_Kotlin Coroutines - Fatal编程技术网

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

Android Kotlin协同程序是什么,它们与实时数据有何不同,android,kotlin,kotlin-coroutines,Android,Kotlin,Kotlin Coroutines,我开始使用Android开发者社区开发的新东西,其中之一是协同程序。我使用了LiveData 我假设在使用它们时,它们也是生命周期安全的,那么为什么引入协同路由,以及它们与LiveData的区别。我在Youtube上的开发者频道上看过这段视频,但我并不完全理解。挂起和恢复如何比LiveData工作得更好。好的,首先,协同程序实际上与LiveData没有太多关系,尽管它们可能在这里或那里共享一些概念。 协同路由用于执行异步操作:从网络、数据库等检索数据。 如果您在通道或流的上下文中进行讨论(我不建

我开始使用Android开发者社区开发的新东西,其中之一是协同程序。我使用了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
和协同程序一起使用。