WorkManager konfiguriert sich standardmäßig automatisch beim Start Ihrer App. mit angemessenen Optionen, die sich für die meisten Apps eignen. Wenn Sie mehr wie WorkManager seine Arbeit verwaltet und plant, können Sie die WorkManager konfigurieren, indem Sie WorkManager selbst initialisieren.
On-Demand-Initialisierung
Bei der On-Demand-Initialisierung können Sie WorkManager nur erstellen, wenn diese Komponente nicht bei jedem App-Start. Dadurch wird WorkManager deaktiviert kritischer Start-up-Pfad und verbessert die Startleistung von Apps. So nutzen Sie On-Demand Initialisierung:
Standardinitialisierer entfernen
Wenn Sie Ihre eigene Konfiguration angeben möchten, müssen Sie zuerst die Standardeinstellung entfernen
Initialisieren. Aktualisieren Sie dazu
AndroidManifest.xml
mithilfe der Zusammenführungsregel tools:node="remove"
.
Seit WorkManager 2.6 wird App-Start verwendet.
in WorkManager integriert sind. Um einen benutzerdefinierten Initialisierer bereitzustellen, müssen Sie
Entfernen Sie den androidx.startup
-Knoten.
Wenn Sie „App-Start“ in Ihrer App nicht verwenden, können Sie die App vollständig entfernen.
<!-- If you want to disable android.startup completely. -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
Entfernen Sie andernfalls nur den Knoten WorkManagerInitializer
.
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<!-- If you are using androidx.startup to initialize other components -->
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
Wenn Sie eine ältere WorkManager-Version als 2.6 verwenden, entfernen Sie
Stattdessen workmanager-init
:
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
Weitere Informationen zur Verwendung von Zusammenführungsregeln in Ihrem Manifest finden Sie in der Dokumentation zu Mehrere Manifestdateien zusammenführen.
Configuration.Provider implementieren
Lassen Sie die Application
-Klasse die
Configuration.Provider
und Ihre eigene Implementierung
Configuration.Provider.getWorkManagerConfiguration
Wenn Sie WorkManager verwenden müssen, rufen Sie unbedingt die Methode
WorkManager.getInstance(Context)
WorkManager ruft die benutzerdefinierte getWorkManagerConfiguration()
-Methode Ihrer App auf, um
Configuration
entdecken. (Sie müssen die
WorkManager.initialize
Sie selbst.)
Hier ein Beispiel für eine benutzerdefinierte getWorkManagerConfiguration()
-Implementierung:
Kotlin
class MyApplication() : Application(), Configuration.Provider { override fun getWorkManagerConfiguration() = Configuration.Builder() .setMinimumLoggingLevel(android.util.Log.INFO) .build() }
Java
class MyApplication extends Application implements Configuration.Provider { @Override public Configuration getWorkManagerConfiguration() { return new Configuration.Builder() .setMinimumLoggingLevel(android.util.Log.INFO) .build(); } }
Benutzerdefinierte Initialisierung vor dem WorkManager 2.1.0
Bei WorkManager-Versionen vor Version 2.1.0 gibt es zwei Initialisierungen Optionen. In den meisten Fällen Standardinitialisierung ist alles, was Sie brauchen. Um den WorkManager genauer zu steuern, können Sie eigene Konfiguration festlegen.
Standardinitialisierung
WorkManager verwendet eine benutzerdefinierte ContentProvider
zur Initialisierung, wenn deine App
beginnt. Dieser Code befindet sich in der internen Klasse
androidx.work.impl.WorkManagerInitializer
und verwendet die Standardeinstellung
Configuration
Der Standardinitialisierer wird automatisch verwendet, es sei denn, Sie
ausdrücklich deaktivieren.
Der Standardinitialisierer ist für die meisten Anwendungen geeignet.
Benutzerdefinierte Initialisierung
Wenn Sie den Initialisierungsprozess steuern möchten, müssen Sie Standardinitialisierer deaktivieren, und legen Sie Ihre eigene benutzerdefinierte Konfiguration fest.
Sobald der Standardinitialisierer entfernt wurde, können Sie WorkManager:
Kotlin
// provide custom configuration val myConfig = Configuration.Builder() .setMinimumLoggingLevel(android.util.Log.INFO) .build() // initialize WorkManager WorkManager.initialize(this, myConfig)
Java
// provide custom configuration Configuration myConfig = new Configuration.Builder() .setMinimumLoggingLevel(android.util.Log.INFO) .build(); //initialize WorkManager WorkManager.initialize(this, myConfig);
Stellen Sie sicher, dass die Initialisierung des
WorkManager
Singleton läuft entweder in
Application.onCreate()
oder in einer
ContentProvider.onCreate()
Eine vollständige Liste der verfügbaren Anpassungen finden Sie in der
Configuration.Builder()
in der Referenzdokumentation.