【问题标题】:Adding WorkManager Worker Factories to a dynamic feature module将 WorkManager Worker Factories 添加到动态功能模块
【发布时间】: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


    【解决方案1】:

    在尝试了反射和 ClassNotFoundExceptions 之后,我刚刚删除了动态功能模块,并将其与应用程序捆绑在一起。如果有解决方案仍然会感兴趣。

    【讨论】:

      猜你喜欢
      • 2020-09-30
      • 2023-01-13
      • 2015-10-20
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多