首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WorkManager :如何在同一应用中设置不同的WorkManager配置

WorkManager :如何在同一应用中设置不同的WorkManager配置
EN

Stack Overflow用户
提问于 2020-01-28 13:00:45
回答 1查看 951关注 0票数 3

我正在做一个多模块项目(Gradle模块)。我在我的模块中使用WorkManager。我也在使用Dagger进行依赖注入。现在,我必须使用dagger向我的WorkManager注入依赖项。我对WorkManager中的Dagge2设置非常熟悉。但我面临的问题是,我必须使用worker factory来使其与dagger兼容。这样我就可以在Dagger Multi bindings的帮助下注入依赖项。但是目前主模块(主应用gradle模块)中的WorkManager配置是

代码语言:javascript
复制
      public Configuration getWorkManagerConfiguration() {
        return new Configuration.Builder()
            .setMinimumLoggingLevel(android.util.Log.INFO)
            .build();
      }

它不使用定制工厂。而且已经有几个其他模块(gradle模块的其他功能)正在使用WorkManger,而不需要工厂。现在,如果我更改此配置并添加一个工厂,可能会破坏其他几个地方的工作管理器设置。我只能为模块中的WorkManager类使用工厂吗(或者只有一些工作管理器类应该通过工厂初始化,其他的使用默认配置)。有可能这样做吗?希望我的问题清楚了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-28 15:36:48

您可以使用DelegatingWorkerFactoryadd,您可以自定义它的WorkerFactory。

您的自定义WorkerFactory将需要检查传递到工厂的类名是否是它想要处理的类名,如果不是,只需返回nullDelegatingWorkerFactory将使用反射恢复到默认的工人工厂。

请记住,每次初始化WorkManager时都需要添加自定义WorkerFactory。如果您不这样做,而WorkManager试图为您的Worker填充WorkRequest (通常由自定义WorkerFactory处理),它将回退到默认的WorkerFactory并失败(可能会出现类未找到异常)。

我们正在使用IOsched中的DelegatingWorkerFactory,这是用于I/O和安卓开发者峰会的调度应用程序。您的自定义WorkerFactory的代码将类似于:

代码语言:javascript
复制
class ConferenceDataWorkerFactory(
    private val refreshEventDataUseCase: RefreshConferenceDataUseCase
) : WorkerFactory() {

    override fun createWorker(
        appContext: Context,
        workerClassName: String,
        workerParameters: WorkerParameters
    ): ListenableWorker? {

        return when (workerClassName) {
            ConferenceDataWorker::class.java.name ->
                ConferenceDataWorker(appContext, workerParameters, refreshEventDataUseCase)
            else ->
                // Return null, so that the base class can delegate to the default WorkerFactory.
                null
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59942384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档