【问题标题】:What is the importance of using WorkerThread annotation for a method that run in coroutine对在协程中运行的方法使用 WorkerThread 注释的重要性是什么
【发布时间】:2021-12-09 01:51:51
【问题描述】:
我注意到我最近开始工作的项目中的一些方法,如下所述。在此方法中,功能在协程中执行。我想知道这里 WorkerThread 注解的用途。
@WorkerThread
override suspend fun generate(context: Context) {
return withContext(Dispatchers.IO) {
// Some functionality
}
}
【问题讨论】:
标签:
android
kotlin
kotlin-coroutines
coroutine
worker-thread
【解决方案1】:
@WorkerThread 注释表明该函数应该从工作线程中调用,无论是出于计算原因还是时间原因。
它不会阻止您从主线程调用它,但如果您这样做,linter 或代码检查工具会警告您。
【解决方案2】:
通过使用 @WorkerThread 注释标记方法,作者告诉
此方法可能需要一些时间来执行,并且可能会冻结用户界面 (UI),因此它应该在工作线程上运行以防止这种情况发生。
顺便说一句,您还可以使用@WorkerThread 注释标记一个类。在这种情况下,类中的所有方法都应该在工作线程上调用。