我升级了 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以来引入的。
我不太确定是否应该在我的AndroidManifest.xml
中包含以下内容。
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
目前,以下是我的Application
类。
MyApplication类
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);
}
}
似乎在Application
类为空时,“默认初始化”(WorkManager.getInstance()
)也有少数机会被执行。我可以通过包含以下
provider
来轻松消除APK导出期间的错误。但是,这样做是否正确?<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
getWorkManager
方法? - Sir Codesalottools:node="remove"
是正确的方法。我们的团队早就采用了文档中提到的方法,所以这并不是什么新鲜事。 - azizbekianandroidx.work.impl.WorkManagerInitializer
的含义。我原本认为这意味着从我的清单中删除代码,但实际上您正在更新提供程序。 - lasec0203