美文网首页
WorkManager中的线程处理

WorkManager中的线程处理

作者: itBox | 来源:发表于2022-07-09 08:02 被阅读0次

    WorkManager 使用入门中,我们提到 WorkManager 可以代表您异步执行后台工作。该基本实现可满足大多数应用的需求。关于更高级的用例(例如正确处理正在停止的工作),您应了解 WorkManager 中的线程处理和并发机制。

    对于 Kotlin 用户,WorkManager 为协程提供了一流的支持。如要开始使用,请将 work-runtime-ktx 包含到您的 gradle 文件中。不要扩展 Worker,而应扩展 CoroutineWorker,后者包含 doWork() 的挂起版本。例如,如果要构建一个简单的 CoroutineWorker 来执行某些网络操作,您需要执行以下操作:

    https://developer.android.com/topic/libraries/architecture/workmanager/advanced/coroutineworker?hl=zh-cn

    class CoroutineDownloadWorker(
        context: Context,
        params: WorkerParameters
    ) : CoroutineWorker(context, params) {
    
        override suspend fun doWork(): Result {
            withContext(Dispatchers.IO) {
                val data = downloadSynchronously("https://www.google.com")
                saveData(data)
                return Result.success()
            }
        }
    }
    

    CoroutineWorker.doWork() 是一个“挂起”函数。

    CoroutineWorker 通过取消协程并传播取消信号来自动处理停工情况。您无需执行任何特殊操作来处理停工情况。

    相关文章

      网友评论

          本文标题:WorkManager中的线程处理

          本文链接:https://www.haomeiwen.com/subject/dvombrtx.html