WorkManager自定义初始化抱怨WorkManager#initialize

时间:2020-06-22 08:11:30

标签: java android android-workmanager

使用: 实现“ androidx.work:工作运行时:2.3.4”

我正在尝试实现自定义初始化,以启用更详细的日志记录according to these instructions

第一个代码段有一行错误:return Configuration.Builder()必须为return new Configuration.Builder()

我扩展了应用程序,如下所示:

class MyApplication extends Application implements Configuration.Provider {
    @Override
    public Configuration getWorkManagerConfiguration() {
        return new Configuration.Builder()
                .setMinimumLoggingLevel(android.util.Log.INFO)
                .build();
    }
}

我像这样启动工人:

WorkManager.getInstance(getApplicationContext());

尽管如此,我仍然因该投诉而使应用程序崩溃:

WorkManager没有正确初始化。您已明确禁用 清单中的WorkManagerInitializer,尚未手动调用 此时会初始化WorkManager#,并且您的应用程序不会 实现Configuration.Provider。

即使说明中指出:

您不需要自己调用WorkManager.initialize()

2 个答案:

答案 0 :(得分:0)

您需要在Application类中实现Configuration.Provider接口,以使用WorkManager的on-demand initialization提供自定义配置。

Advanced WorkManager codelab中的一些示例代码对此进行了解释:

class BlurApplication : Application(), Configuration.Provider {

    override fun getWorkManagerConfiguration(): Configuration = 

        Configuration.Builder()
                     .setMinimumLoggingLevel(android.util.Log.DEBUG)
                     .build()
...
}

请确保您AndroidManifest.xml中包含此应用程序类:

    <application
        android:name=".BlurApplication"

这样做,第一次使用getInstance(context)请求WorkManager实例时,库将使用您的自定义配置进行初始化。

答案 1 :(得分:0)

请参考此链接: https://developer.android.com/topic/libraries/architecture/workmanager/advanced/custom-configuration#custom

OR

像这样初始化您的自定义WorkManager:

// provide custom configuration
val myConfig = Configuration.Builder()
    .setMinimumLoggingLevel(android.util.Log.INFO)
    .build()

// initialize WorkManager
WorkManager.initialize(this, myConfig)