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

问题描述 投票:0回答:4

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

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

第一个片段有一行错误:

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#initialize,并且您的应用程序没有 实现Configuration.Provider。

尽管说明书上写着:

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

java android android-workmanager
4个回答
7
投票

请参考此链接: 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)

3
投票

您需要在 Application 类中实现

Configuration.Provider
接口,以使用 WorkManager 的 按需初始化 提供自定义配置。

这通过 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 实例时,库将使用您的自定义配置进行初始化。


0
投票

将其添加到应用程序标记内的 Manifest.xml 中。

<application>

   <provider
            android:name="androidx.startup.InitializationProvider"
            android:authorities="${applicationId}.androidx-startup"
            tools:node="remove">
        </provider>

   <application>


0
投票

必须在新版本中使用

@HiltAndroidApp 类 HiPixiApp() : Application(), Configuration.Provider { 覆盖 val workManagerConfiguration:配置 get() = Configuration.Builder() .setWorkerFactory(workerFactory) 。建造() }

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.