WorkManager的二次初始化

Second initialization of WorkManager

我不仅要初始化 WorkerManager 一次,因为在运行时一些参数可能会改变 (WorkerFactory())。所以我需要打电话

val configuration = Configuration.Builder()
            .setWorkerFactory(aggregatingWorkerFactory)
            .build()

WorkManager.initialize(context!!, configuration)

但是,第二次调用它会抛出 IllegalStateException。

我读到我可以在 ContentProvider 上初始化它: https://medium.com/@programmerr47/custom-work-manager-initialization-efdd2afa6459 但是我的 workerFactory 对象是由 dagger 注入的,我不能在 Content Provider 上使用 AndroidInjector,因为它总是没有初始化:

Caused by: kotlin.UninitializedPropertyAccessException: lateinit property androidInjector has not been initialized

我读到here有一个接口HasContentProviderInjector:
但我在我的 Dagger2 2.24 版中找不到它,我认为它不应该工作,因为如果我理解正确的话,ContentProvider 是在 Application 对象之前创建的。

我该怎么办?尝试通过反射对象清除: sDelegatedInstance != null && sDefaultInstance != null 或者其他什么?

WorkManager是单例,只能初始化一次。
您可以使用默认初始化或您自己的初始化。要拥有自己的配置,您需要禁用默认配置,如 in the documentation.

所述