【发布时间】:2020-12-15 19:01:09
【问题描述】:
工人工厂用于按需为 WorkManager 构建工人(当任务准备好运行时)。我正在使用动态功能模块:即 2 个模块,:app 和 :feature,其中 :feature 依赖于 :app,而我的工作人员在 :feature 中。
要注入一个worker,我需要注入它的工厂类,因为Workers是由android创建的,而不是我们。因此,我尝试DelegatingWorkerFactorydocs 向workManager 配置添加更多工厂,但我无法导入worker(或其工厂),因为动态功能模块中的依赖关系被颠倒了(:feature 依赖于:app):@987654322 @
@Singleton
class MyWorkerFactory @Inject constructor(): DelegatingWorkerFactory() {
init {
addFactory(Class.forName(FULLY_QUALIFIED_CLASS_NAME).getConstructor().newInstance() as WorkerFactory)
}
}
如何在动态功能模块中支持工人/工人工厂?似乎动态功能模块在启动时永远不可用(onCreate)。也许this 是一个相关问题。
WorkManager : How to set-up different WorkManager Configurations in same App 可能与您相关以获得更多上下文。我现有的解决方法使用反射来获取类名而不是ConferenceDataWorker::class.java.name,并且有点失望动态功能模块需要它。伟大的 Derek Banas 说反射很慢。
我没有使用 Hilt。此外,显然 Hilt 不支持动态功能模块。
【问题讨论】:
标签: android