// provide custom configurationvalmyConfig=Configuration.Builder().setMinimumLoggingLevel(android.util.Log.INFO).build()// initialize WorkManagerWorkManager.initialize(this,myConfig)
Java
// provide custom configurationConfigurationmyConfig=newConfiguration.Builder().setMinimumLoggingLevel(android.util.Log.INFO).build();//initialize WorkManagerWorkManager.initialize(this,myConfig);
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# Custom WorkManager Configuration and Initialization\n\nBy default, WorkManager configures itself automatically when your app starts,\nusing reasonable options that are suitable for most apps. If you require more\ncontrol of how WorkManager manages and schedules work, you can customize the\nWorkManager configuration by initializing WorkManager yourself.\n\nOn-Demand Initialization\n------------------------\n\nOn-demand initialization lets you create WorkManager only when that component is\nneeded, instead of every time the app starts up. Doing so moves WorkManager off\nyour critical startup path, improving app startup performance. To use on-demand\ninitialization:\n\n### Remove the default initializer\n\nTo provide your own configuration, you must first remove the default\ninitializer. To do so, update\n[`AndroidManifest.xml`](/guide/topics/manifest/manifest-intro)\nusing the merge rule `tools:node=\"remove\"`.\n\nSince WorkManager 2.6, [App Startup](/topic/libraries/app-startup) is used\ninternally within WorkManager. To provide a custom initializer you need to\nremove the `androidx.startup` node.\n\nIf you don't use App Startup in your app, you can remove it completely. \n\n \u003c!-- If you want to disable android.startup completely. --\u003e\n \u003cprovider\n android:name=\"androidx.startup.InitializationProvider\"\n android:authorities=\"${applicationId}.androidx-startup\"\n tools:node=\"remove\"\u003e\n \u003c/provider\u003e\n\nOtherwise, remove only the `WorkManagerInitializer` node. \n\n \u003cprovider\n android:name=\"androidx.startup.InitializationProvider\"\n android:authorities=\"${applicationId}.androidx-startup\"\n android:exported=\"false\"\n tools:node=\"merge\"\u003e\n \u003c!-- If you are using androidx.startup to initialize other components --\u003e\n \u003cmeta-data\n android:name=\"androidx.work.WorkManagerInitializer\"\n android:value=\"androidx.startup\"\n tools:node=\"remove\" /\u003e\n \u003c/provider\u003e\n\nWhile using a version of WorkManager older than 2.6, remove\n`workmanager-init` instead: \n\n \u003cprovider\n android:name=\"androidx.work.impl.WorkManagerInitializer\"\n android:authorities=\"${applicationId}.workmanager-init\"\n tools:node=\"remove\" /\u003e\n\nTo learn more about using merge rules in your manifest, see the documentation on\n[merging multiple manifest files](/studio/build/manage-manifests#merge-manifests).\n\n### Implement Configuration.Provider\n\nHave your `Application` class implement the\n[`Configuration.Provider`](/reference/androidx/work/Configuration.Provider)\ninterface, and provide your own implementation of\n[`Configuration.Provider.getWorkManagerConfiguration`](/reference/androidx/work/Configuration.Provider#getWorkManagerConfiguration()).\nWhen you need to use WorkManager, make sure to call the method\n[`WorkManager.getInstance(Context)`](/reference/androidx/work/WorkManager#getInstance(android.content.Context)).\nWorkManager calls your app's custom `getWorkManagerConfiguration()` method to\ndiscover its `Configuration`. (You do not need to call\n`WorkManager.initialize` yourself.)\n| **Note:** If you call the deprecated no-parameter `WorkManager.getInstance()` method before WorkManager has been initialized, the method throws an exception. You should always use the `WorkManager.getInstance(Context)` method, even if you're not customizing WorkManager.\n\nHere's an example of a custom `getWorkManagerConfiguration()` implementation: \n\n### Kotlin\n\n```kotlin\nclass MyApplication() : Application(), Configuration.Provider {\n override fun getWorkManagerConfiguration() =\n Configuration.Builder()\n .setMinimumLoggingLevel(android.util.Log.INFO)\n .build()\n}\n```\n\n### Java\n\n```java\nclass MyApplication extends Application implements Configuration.Provider {\n @Override\n public Configuration getWorkManagerConfiguration() {\n return new Configuration.Builder()\n .setMinimumLoggingLevel(android.util.Log.INFO)\n .build();\n }\n}\n```\n| **Note:** You must [remove the default\n| initializer](/topic/libraries/architecture/workmanager/advanced/custom-configuration#remove-default) for a custom `getWorkManagerConfiguration()` implementation to take effect.\n\nCustom initialization before WorkManager 2.1.0\n----------------------------------------------\n\nFor versions of WorkManager before version 2.1.0, there are two initialization\noptions. In most cases, the\n[default initialization](/topic/libraries/architecture/workmanager/advanced/custom-configuration#default)\nis all you need. For more precise control of WorkManager, you can\n[specify your own configuration](/topic/libraries/architecture/workmanager/advanced/custom-configuration#custom).\n\n### Default initialization\n\nWorkManager uses a custom `ContentProvider` to initialize itself when your app\nstarts. This code lives in the internal class\n`androidx.work.impl.WorkManagerInitializer` and uses the default\n[`Configuration`](/reference/androidx/work/Configuration).\nThe default initializer is automatically used unless you\n[explicitly disable it](/topic/libraries/architecture/workmanager/advanced/custom-configuration#remove-default).\nThe default initializer is suitable for most apps.\n\n### Custom initialization\n\nIf you want to control the initialization process, you must\n[disable the default initializer](/topic/libraries/architecture/workmanager/advanced/custom-configuration#remove-default),\nthen define your own custom configuration.\n\nOnce the default initializer is removed, you can manually initialize\nWorkManager: \n\n### Kotlin\n\n```kotlin\n// provide custom configuration\nval myConfig = Configuration.Builder()\n .setMinimumLoggingLevel(android.util.Log.INFO)\n .build()\n\n// initialize WorkManager\nWorkManager.initialize(this, myConfig)\n```\n\n### Java\n\n```java\n// provide custom configuration\nConfiguration myConfig = new Configuration.Builder()\n .setMinimumLoggingLevel(android.util.Log.INFO)\n .build();\n\n//initialize WorkManager\nWorkManager.initialize(this, myConfig);\n```\n\nMake sure the initialization of the\n[`WorkManager`](/reference/androidx/work/WorkManager)\nsingleton runs either in\n[`Application.onCreate()`](/reference/android/app/Application#onCreate())\nor in a\n[`ContentProvider.onCreate()`](/reference/android/content/ContentProvider#onCreate()).\n\nFor the complete list of customizations available, see the\n[`Configuration.Builder()`](/reference/androidx/work/Configuration.Builder)\nreference documentation."]]