我正在处理多模块项目(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类使用工厂(或仅应通过工厂初始化某些工作管理器类,其他应使用默认配置)。有可能吗?希望我的问题清楚。
您可以使用DelegatingWorkerFactory
和DelegatingWorkerFactory
为其自定义WorkerFactory。
您的自定义WorkerFactory将需要检查传递给工厂的类名是否是它要处理的类名,如果不是,则只需返回add,然后null
将使用反射还原为默认的worker工厂。
请记住,每次初始化WorkManager时都需要添加自定义WorkerFactory。如果您不这样做,并且WorkManager尝试为您的Worker(通常由自定义WorkerFactory处理)填充一个WorkRequest,它将回退到默认的WorkerFactory并失败(可能是找不到类异常)。
我们正在使用DelegatingWorkerFactory
中的DelegatingWorkerFactory
,用于I / O和Android开发者峰会的调度应用程序。您的自定义WorkerFactory的代码将类似于:
IOsched