android - WorkManager 未初始化异常,即使 WorkManagerInitializer 未在 list 中禁用

标签 android android-workmanager

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

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 文档说

By default, WorkManager auto-initializes itself using a built-in ContentProvider. ContentProviders are created and run before the Application object, so this allows the WorkManager singleton to be setup before your code can run in most cases.



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

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

任何人以前都见过这种行为并且知道这里会发生什么?为什么是 WorkManager在应用程序启动之前未初始化?

最佳答案

在 list 文件中添加以下代码

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

关于android - WorkManager 未初始化异常,即使 WorkManagerInitializer 未在 list 中禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61923769/

相关文章:

android - 如何删除返回堆栈 fragment 的菜单项?

android - Tasker 插件变量替换 : Developer

android - Google Analytics Easy Tracker 问题

java - setOnPreferenceClickListener 帮助, Activity 启动时关闭

android-ndk gnuSTL_static exe 不工作

android - WorkManager 的 PeriodicWorkRequest 只执行一次,不重复

android - WorkerManager 是否是在应用程序中实现警报/提醒功能的可靠方式?

android - 需要在android中每分钟运行一个后台任务

java - 当设备锁定时,WorkManager 多次调用 doWork() 方法

Android Oreo workmanager PeriodicWork 不工作