【问题标题】:WorkManager not initialized exception even though WorkManagerInitializer not disabled in manifestWorkManager 未初始化异常,即使 WorkManagerInitializer 未在清单中禁用
【发布时间】:2020-05-20 22:07:16
【问题描述】:

我有一个应用程序使用WorkManager 执行多个后台任务。最近我在生产日志中看到很多崩溃,原因是 WM 没有被初始化,即使我没有在清单中禁用 WorkManagerInitializer

java.lang.IllegalStateException: WorkManager is not initialized properly. The most likely cause is that you disabled WorkManagerInitializer in your manifest but forgot to call WorkManager#initialize in your Application#onCreate or a ContentProvider.
        at androidx.work.WorkManager.getInstance(WorkManager:161)
        ...

WM 文档说

默认情况下,WorkManager 使用内置的 ContentProvider 自动初始化自身。 ContentProviders 在 Application 对象之前创建和运行,因此在大多数情况下,这允许在您的代码运行之前设置 WorkManager 单例。

有趣的部分是在大多数情况下。我想知道在什么情况下它在应用程序启动之前没有正确初始化。

我最初的猜测是我的代码中的一个错误可能创建了太多 WM 任务,这些任务需要很长时间才能初始化,但我无法以这种方式重新创建崩溃。

任何人以前见过这种行为并且知道这里会发生什么?为什么应用启动前WorkManager没有初始化?

【问题讨论】:

    标签: android android-workmanager


    【解决方案1】:

    在清单文件中添加以下代码

       <provider
        android:name="androidx.work.impl.WorkManagerInitializer"
        android:authorities="${applicationId}.workmanager-init"
        android:exported="false"
        tools:node="remove" />
    

    【讨论】:

    • 我意识到这是一种可能的解决方案,但我专门询问自动初始化,因此清单中没有这个。顺便说一句,由于我无法找到自动初始化的答案,这正是我现在正在做的事情。
    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多