根本原因:
"androidx.work.WorkManager : E/WM-EnqueueRunnable: Prerequisite ... doesn't exist; not enqueuing" 错误通常是由于工作请求的先决条件(Prerequisite)不存在而引起的。
解决方法:
要解决这个问题,需要按照以下步骤进行操作:
setConstraints()
方法为工作请求设置正确的约束条件。Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(YourWorker.class)
.setConstraints(constraints)
.build();
检查工作请求的先决条件是否已满足:确保在将工作请求加入到 WorkManager 队列之前,先决条件已经满足。例如,如果您设置了网络连接的先决条件,则需要确保设备已连接到网络。
检查工作请求的先决条件是否正确设置:如果您在工作请求中设置了一个或多个先决条件,确保正确设置了这些先决条件。例如,如果您设置了设备电池充电的先决条件,则需要使用正确的常量来设置约束条件。
Constraints constraints = new Constraints.Builder()
.setRequiresCharging(true)
.build();
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(YourWorker.class)
.setConstraints(constraints)
.build();
Log.e("WorkManager", "Prerequisite doesn't exist; not enqueuing");
通过按照上述步骤进行操作,您应该能够解决 "androidx.work.WorkManager : E/WM-EnqueueRunnable: Prerequisite ... doesn't exist; not enqueuing" 错误。