Я получаю следующую новую ошибку при обновлении WorkManager с «2.2.0» до «2.3.0-rc01»
Ошибка возникает при экспорте APK.
C:\app: Error: Remove androidx.work.impl.WorkManagerInitializer from your AndroidManifest.xml when using on-demand initialization. [RemoveWorkManagerInitializer]
Explanation for issues of type "RemoveWorkManagerInitializer":
If an android.app.Application implements
androidx.work.Configuration.Provider,
the default androidx.work.impl.WorkManagerInitializer needs to be removed
from the
AndroidManifest.xml file.
Я не уверен, почему я не получил такую ошибку в 2.2.0, так как «Инициализация по требованию» введена с 2.1.0.
Согласно https://developer.android.com/topic/libraries/architecture/workmanager/advanced/custom-configuration#remove -default
Я не уверен, что правильно ли включать следующее в мой AndroidManifest.xml
.
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
В настоящее время Вот мой Application
класс.
MyApplication class
public class MyApplication extends MultiDexApplication implements Configuration.Provider {
private static MyApplication me;
@Override
public void onCreate() {
super.onCreate();
me = this;
}
public static MyApplication instance() {
return me;
}
@NonNull
@Override
public Configuration getWorkManagerConfiguration() {
return new Configuration.Builder()
.build();
}
}
Как я создаю WorkManager
public static WorkManager getWorkManager() {
MyApplication myApplication = MyApplication.instance();
if (myApplication == null) {
// Very rare edge case. Not sure how it happens. But, it happens :)
return WorkManager.getInstance();
} else {
return WorkManager.getInstance(myApplication);
}
}
Кажется, что есть редкий шанс, что " Инициализация по умолчанию "(WorkManager.getInstance()
) также выполняется, когда класс Application
равен нулю.
Я легко могу устранить ошибку при экспорте APK, добавив следующую строку provider
. Но так ли это?
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />