Par défaut, WorkManager se configure automatiquement au démarrage de votre application à l'aide d'options raisonnables et adaptées à la plupart des applications. Si vous avez besoin d'un contrôle accru sur la manière dont WorkManager gère et planifie le travail, vous pouvez personnaliser la configuration de WorkManager en initialisant WorkManager vous-même.
Initialisation à la demande
L'initialisation à la demande vous permet de créer WorkManager uniquement lorsque ce composant est nécessaire plutôt qu'à chaque démarrage de l'application. Cela permet de retirer WorkManager du chemin critique au démarrage, ce qui améliore les performances de démarrage de l'application. Pour utiliser l'initialisation à la demande :
Supprimer l'initialiseur par défaut
Pour proposer votre propre configuration, supprimez tout d'abord l'initialiseur par défaut. Pour ce faire, mettez à jour AndroidManifest.xml
à l'aide de la règle de fusion tools:node="remove"
.
Depuis WorkManager 2.6, le démarrage d'application est utilisé en interne dans WorkManager. Pour proposer un initialiseur personnalisé, vous devez supprimer le nœud androidx.startup
.
Si vous n'utilisez pas cette fonctionnalité dans votre application, vous pouvez la supprimer complètement.
<!-- If you want to disable android.startup completely. -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
Sinon, supprimez uniquement le nœud 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>
Si vous utilisez une version de WorkManager antérieure à la version 2.6, supprimez
workmanager-init
à la place:
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
Pour en savoir plus sur l'utilisation des règles de fusion dans votre fichier manifeste, consultez les documents concernant la fusion de plusieurs fichiers manifestes.
Intégrer Configuration.Provider
Demandez à votre classe Application
d'implémenter la classe
Configuration.Provider
et de fournir votre propre implémentation
Configuration.Provider.getWorkManagerConfiguration
Lorsque vous devez utiliser WorkManager, veillez à appeler la méthode
WorkManager.getInstance(Context)
WorkManager appelle la méthode getWorkManagerConfiguration()
personnalisée de votre application pour découvrir sa Configuration
. (Inutile d'appeler WorkManager.initialize
vous-même.)
Exemple d'intégration getWorkManagerConfiguration()
personnalisée :
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(); } }
Initialisation personnalisée avant WorkManager 2.1.0
Dans les versions de WorkManager antérieures à la version 2.1.0, deux options d'initialisation existent. Dans la plupart des cas, l'initialisation par défaut suffit. Pour un contrôle plus précis de WorkManager, vous pouvez préciser votre propre configuration.
Initialisation par défaut
WorkManager utilise un ContentProvider
personnalisé pour s'initialiser au démarrage de votre application. Ce code se trouve dans la classe interne androidx.work.impl.WorkManagerInitializer
et utilise la valeur par défaut Configuration
.
L'initialiseur par défaut est utilisé automatiquement, sauf si vous le désactivez explicitement.
L'initialiseur par défaut convient à la plupart des applications.
Initialisation personnalisée
Si vous souhaitez contrôler le processus d'initialisation, désactivez l'initialiseur par défaut, puis définissez votre propre configuration personnalisée.
Une fois l'initialiseur par défaut supprimé, vous pouvez initialiser manuellement 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);
Assurez-vous que l'initialisation du Singleton WorkManager
s'exécute dans Application.onCreate()
ou dans un ContentProvider.onCreate()
.
Pour obtenir la liste complète des personnalisations disponibles, consultez les documents de référence sur Configuration.Builder()
.