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

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

我正在处理多模块项目(Gradle模块)。我在模块中使用WorkManager。我还利用Dagger进行依赖注入。现在,我必须使用匕首将依赖项注入到WorkManager中。我对WorkManager的Dagger 2设置非常熟悉。但是我面临的问题是,我必须使用工人工厂,使其与匕首兼容。这样我就可以借助Dagger Multi绑定注入依赖项。但是当前主模块(Main app gradle模块)中的WorkManager配置为

      public Configuration getWorkManagerConfiguration() {
        return new Configuration.Builder()
            .setMinimumLoggingLevel(android.util.Log.INFO)
            .build();
      }

不使用自定义工厂。并且已经有其他几个模块(用于其他功能的渐变模块)在没有工厂的情况下使用WorkManger。现在,如果我更改此配置并添加工厂,则可能会在其他几个地方破坏工作管理器的设置。我是否可以仅对模块中的WorkManager类使用工厂(或仅应通过工厂初始化某些工作管理器类,其他应使用默认配置)。有可能吗?希望我的问题清楚。

android dagger-2 android-workmanager
1个回答
0
投票

您可以使用DelegatingWorkerFactoryDelegatingWorkerFactory为其自定义WorkerFactory。

您的自定义WorkerFactory将需要检查传递给工厂的类名是否是它要处理的类名,如果不是,则只需返回add,然后null将使用反射还原为默认的worker工厂。

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

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

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