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

eli*_*lig 6 java android android-workmanager

与:实现“androidx.work:work-runtime:2.3.4”

我正在尝试实现自定义初始化,以根据这些说明启用更详细的日志记录。

第一个片段有一行 bad: return Configuration.Builder()need to be 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我像这样启动工人:

WorkManager.getInstance(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

但即使在这一切之后,我还是让应用程序因以下投诉而崩溃:

WorkManager 未正确初始化。您已在清单中显式禁用 WorkManagerInitializer,此时尚未手动调用 WorkManager#initialize,并且您的应用程序未实现 Configuration.Provider。

尽管说明指出:

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

小智 5

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

或者

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

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

// initialize WorkManager
WorkManager.initialize(this, myConfig)
Run Code Online (Sandbox Code Playgroud)


pfm*_*ggi 2

您需要在 Application 类中实现该接口,以使用 WorkManager 的按需初始化Configuration.Provider来提供自定义配置。

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

class BlurApplication : Application(), Configuration.Provider {

    override fun getWorkManagerConfiguration(): Configuration = 

        Configuration.Builder()
                     .setMinimumLoggingLevel(android.util.Log.DEBUG)
                     .build()
...
}
Run Code Online (Sandbox Code Playgroud)

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

    <application
        android:name=".BlurApplication"
Run Code Online (Sandbox Code Playgroud)

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