在协程中运行的方法使用WorkerThread注解的重要性是什么

问题描述 投票:0回答:3

我在最近开始工作的一个项目中注意到了一些方法,如下所述。在此方法中,功能在协程中执行。我想知道这里WorkerThread注解的用途。

@WorkerThread
override suspend fun generate(context: Context) {
  return withContext(Dispatchers.IO) {
    // Some functionality
  }
}
android kotlin kotlin-coroutines coroutine worker-thread
3个回答
1
投票

@WorkerThread 注释指示该函数应从工作线程调用,无论是出于计算原因还是计时原因。

它不会阻止您从主线程调用它,但如果您这样做,linter 或代码检查工具会警告您。


1
投票

通过使用

@WorkerThread
注释标记方法,作者告诉我们 此方法可能需要一些时间来执行,并且可能会冻结用户界面(UI),因此它应该在工作线程上运行以防止这种情况。

顺便说一句,您还可以使用

@WorkerThread
注释来标记类。在这种情况下,应该在工作线程上调用类中的所有方法。


0
投票

由于上述函数是一个挂起函数,因此无需指定 @WorkerThread 注解。 Kotlin 协程本质上支持挂起和异步执行。挂起函数的挂起和恢复可以发生在不同的线程上,并且它们被设计为与线程无关。

© www.soinside.com 2019 - 2024. All rights reserved.