当 Android 的 WorkManager 周期性任务不工作时,可能有以下几个原因和解决方法:
implementation 'androidx.work:work-runtime:2.7.0'
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresBatteryNotLow(false)
.setRequiresCharging(false)
.build();
PeriodicWorkRequest workRequest = new PeriodicWorkRequest.Builder(YourWorker.class, 15, TimeUnit.MINUTES)
.setConstraints(constraints)
.build();
public class YourWorker extends Worker {
public YourWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
// 执行周期性任务的逻辑
// 返回 Result.success() 表示任务执行成功
// 返回 Result.retry() 表示任务执行失败,需要重试
// 返回 Result.failure() 表示任务执行失败,不需要重试
return Result.success();
}
}
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
WorkManager.initialize(this, new Configuration.Builder().build());
}
}
PeriodicWorkRequest workRequest = new PeriodicWorkRequest.Builder(YourWorker.class, 15, TimeUnit.MINUTES)
.build();
WorkManager.getInstance(context).enqueue(workRequest);
通过以上步骤逐一排查,可以找到并解决 Android 周期性的 WorkManager 不工作的问题。