在哪些情况下,您不希望或不应该在 Kotlin 中使用协程?



我读了很多关于使用协程的冒险故事,但我没有发现为什么不应该或不能使用它们。

顺便说一下,为什么不将所有方法都用作挂起方法呢?

我在理解这里的一些概念时遇到了一些困难,所以在我的问题中,我假装提出了相反的情况(为什么不使用它(,这样我就可以通过对比更好地理解。

请查看我对您问题的联机回答:

  1. 但我没有发现你为什么不应该或不能使用它们
    答案:a.您不应将它们用于任何前台任务
    b。您不应该将它们用于任何简单/真正的快速操作
    c。您不应该将它们用于任何类型的初始化。

  2. 顺便说一下,为什么不将所有方法都用作挂起方法呢
    答案
    a(这将被视为代码气味。这样做是错误的做法。
    b(如果将所有函数标记为挂起,那么每当您想调用挂起函数时,都必须创建一个Coroutine Scope来运行它。
    c(测试挂起函数很困难。它需要一些来自AndroidX的RunBlockingTest的额外设置。

不让所有函数都挂起的主要原因是它们引入的开销,至少在JVM上是这样。每个可挂起的函数都编译成一个Java方法,该方法接收另一个参数,即延续对象,其主体编译成相当复杂的状态机代码,该代码总是实例化另一个延续对象,并将其菊花链连接到作为参数接收的对象。

因此,每当你从协同程序中没有任何东西可以获得时,你就不应该把它们作为默认的做事方式。

相关内容

最新更新