android - 在库和宿主应用程序中初始化 WorkManager 自定义配置 - Android 库项目
问题描述
我正在开发一个库并在其中使用 WorkManager 和 WorkManager 2.5.0
由于我想从库端自定义 WorkManager 的配置,我在 AndroidManifest.xml 中删除了 workmanager-init 并添加了这样的自定义配置,如按需初始化中所述文档
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
[在我的库模块中的 AndroidManifest.xml 中]
和
WorkManager.initialize(context, Configuration.Builder().setMinimumLoggingLevel(Log.INFO).build())
[在我的库模块中的一个类中]
现在,它在图书馆方面按预期工作。然而,当宿主应用也想自定义 WorkManager 的配置时,问题就来了。
当宿主应用也使用 WorkManager 2.5.0 时,
WorkManager.initialize(context, Configuration.Builder().setMinimumLoggingLevel(Log.VERBOSE).build())
应用程序通过抛出异常与这行代码崩溃,java.lang.IllegalStateException: WorkManager is already initialized.
我尝试在主机应用程序的 AndroidManifest.xml 中删除 workmanager-init 但它仍然给我同样的错误。
主机应用程序有什么方法可以自定义 WorkManager 的配置以及我的库自定义它吗?
解决方案
WorkManager 是一个单例,只能初始化一次;或在图书馆或应用程序中。
我建议按照有关此主题的文档指南将 WorkManager 的配置委托给应用程序。