与: 实现“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()
或
像这样初始化您的自定义 WorkManager:
// provide custom configuration
val myConfig = Configuration.Builder()
.setMinimumLoggingLevel(android.util.Log.INFO)
.build()
// initialize WorkManager
WorkManager.initialize(this, myConfig)
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 实例时,库将使用您的自定义配置进行初始化。
将其添加到应用程序标记内的 Manifest.xml 中。
<application>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
<application>
必须在新版本中使用
@HiltAndroidApp 类 HiPixiApp() : Application(), Configuration.Provider { 覆盖 val workManagerConfiguration:配置 get() = Configuration.Builder() .setWorkerFactory(workerFactory) 。建造() }