当我将 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.
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我在 2.2.0 中没有收到这样的错误,因为从 2.1.0 开始引入了“按需初始化”。
我不确定将以下内容包含在我的AndroidManifest.xml.
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)
目前,以下是我的Application班级。
public class MyApplication extends MultiDexApplication implements Configuration.Provider {
private static MyApplication me;
@Override
public void onCreate() {
super.onCreate();
me = …Run Code Online (Sandbox Code Playgroud) 我使用此代码设置我自己的工厂工厂:
val daggerWorkerFactory = DaggerWorkerFactory(toInjectInWorker)
val configuration = Configuration.Builder()
.setWorkerFactory(daggerWorkerFactory)
.build()
WorkManager.initialize(context, configuration)
Run Code Online (Sandbox Code Playgroud)
执行此代码后,我可以获取WorkManager实例:
val workManager = WorkManager.getInstance()
Run Code Online (Sandbox Code Playgroud)
问题是,对于在此之后创建的每个工人,我的工厂从未使用过.而是使用默认工厂.
我可以在API文档中看到方法"WorkManager.initialize"有一个注释:
在清单中禁用androidx.work.impl.WorkManagerInitializer
我找不到任何有关如何执行此操作的信息.这是在一些旧版本的WorkManager上,他们忘了从文档中删除或这是否真的有必要?如果是这样,怎么样?