要解决Android WorkManager不触发两个计划工作之一的问题,你可以使用以下代码示例:
public class WorkManagerInitializer extends Application {
@Override
public void onCreate() {
super.onCreate();
startWorkManager();
}
private void startWorkManager() {
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
OneTimeWorkRequest workRequest1 = new OneTimeWorkRequest.Builder(YourWorker1.class)
.setConstraints(constraints)
.build();
OneTimeWorkRequest workRequest2 = new OneTimeWorkRequest.Builder(YourWorker2.class)
.setConstraints(constraints)
.build();
WorkManager.getInstance(this).beginWith(workRequest1, workRequest2).enqueue();
}
}
YourWorker1
和YourWorker2
,用于执行具体的工作任务:public class YourWorker1 extends Worker {
public YourWorker1(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
// 执行第一个工作任务的逻辑
return Result.success();
}
}
public class YourWorker2 extends Worker {
public YourWorker2(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
// 执行第二个工作任务的逻辑
return Result.success();
}
}
...
通过这种方式,你可以在应用启动时初始化并启动WorkManager,并确保两个工作任务都会触发执行。