Имея эти зависимости:
dependencies {
implementation "androidx.work:work-runtime:2.0.1"
androidTestImplementation "androidx.work:work-testing:2.0.1"
}
При повторном запуске этого кода:
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)
.
Цель состоит в том, чтобы предотвратить сбой во время ручной инициализации (чтобы изменить уровень журнала). Как отключить WorkManagerInitializer
? Если возможно, я не хочу использовать ключевое слово static
.
.getInstance()
- этоstatic
метод, а не метод экземпляра. этот ответ - всего лишь подход, который я нашел, основываясь на предложении в сообщении об ошибке; все еще нужно проверить это (сообщение в блоге - только похожая ситуация). - person Martin Zeitler   schedule 27.04.2019Application#onCreate
, как это предлагается в официальное руководство (сразу под блоком кода). После этого свободно используйте статическийgetInstance
в любом месте вашего кода, потому чтоWorkManager
уже был инициализирован. - person ronginat   schedule 27.04.2019