首页 > 解决方案 > 在库和宿主应用程序中初始化 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 的配置以及我的库自定义它吗?

标签: androidandroid-workmanagerlibrary-project

解决方案


WorkManager 是一个单例,只能初始化一次;或在图书馆或应用程序中。

我建议按照有关此主题的文档指南将 WorkManager 的配置委托给应用程序。


推荐阅读