web-dev-qa-db-fra.com

IllegalStateException: WorkManager est déjà initialisé

Avoir ces dépendances:

dependencies {
    implementation "androidx.work:work-runtime:2.0.1"
    androidTestImplementation "androidx.work:work-testing:2.0.1"
}

Lorsque vous exécutez ce code pour la deuxième fois:

Configuration config = new Configuration.Builder().build();
WorkManager.initialize(getApplicationContext(), config);

this.workManager = WorkManager.getInstance();

Je reçois ce message d'erreur:

Java.lang.IllegalStateException: WorkManager is already initialized.
Did you try to initialize it manually without disabling WorkManagerInitializer?
See WorkManager#initialize(Context, Configuration) or the class level Javadoc for more information.

et il lance également une faille de segmentation du côté natif:

A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR),
fault addr 0x878 in tid 10892 (ova.workmanager),
pid 10892 (ova.workmanager)

Ce serait documentation pour WorkManager#initialize(Context, Configuration).


L'objectif est d'empêcher le plantage lors de l'initialisation manuelle (afin de modifier le niveau de journalisation). Comment désactiver le WorkManagerInitializer? Si possible, je ne souhaite pas utiliser le mot clé static.

5
Martin Zeitler

Si vous souhaitez initialiser le WorkerManager, vous devez le placer dans le onCreate de votre classe d'application personnalisée, donc cela ne sera appelé qu'une seule fois. Après cela, vous ne pouvez obtenir l'instance que lorsque vous en avez besoin sans soucis. Il n'est pas recommandé d'initialiser le Worker Manager. Pourquoi avez-vous besoin de cela?

0
Gerardo Suarez