web-dev-qa-db-ja.com

IllegalStateException:WorkManagerはすでに初期化されています

これらの依存関係がある:

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

このコードを2回目に実行する場合:

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

this.workManager = WorkManager.getInstance();
_

次のエラーメッセージが表示されます。

_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.
_

また、ネイティブ側でセグメンテーション違反をスローします。

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

これは、WorkManager#initialize(Context, Configuration)の-​​ documentation になります。


意図は、手動での初期化中にクラッシュを防止することです(ログレベルを変更するため)。 WorkManagerInitializerを無効にする方法は?可能であれば、staticキーワードを使用したくありません。

5
Martin Zeitler

WorkerManagerを初期化する場合は、これをカスタムアプリケーションクラスのonCreateに配置する必要があるため、これは1回だけ呼び出されます。その後は、心配することなく必要なときにのみインスタンスを取得できます。 Worker Managerを初期化することはお勧めしません。なぜそれが必要なのですか?

0
Gerardo Suarez