WorkManager 是一个用于 Android 开发的后台任务库,它可以帮助你在满足特定条件时执行后台任务,例如在设备连接到 Wi-Fi 或设备处于充电状态时。要在电池优化中使用 WorkManager,请按照以下步骤操作:
在你的项目的 build.gradle 文件中添加 WorkManager 的依赖项:
dependencies {
implementation 'androidx.work:work-runtime:2.5.0'
}
创建一个继承自 Worker 的类,该类将包含要执行的任务。例如,以下代码创建了一个名为 MyWorker 的 Worker 类,该类将在后台执行一个简单的任务:
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.work.Worker;
import androidx.work.WorkerParameters;
public class MyWorker extends Worker {
public MyWorker(@NonNull Context context, @NonNull WorkerParameters params) {
super(context, params);
}
@NonNull
@Override
public Result doWork() {
// 在这里执行你的任务
return Result.success();
}
}
创建一个 WorkRequest,指定要执行的 Worker 类。例如,以下代码创建了一个名为 MyWorkRequest 的 WorkRequest,它将执行 MyWorker 类:
import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkRequest;
long interval = 15 * 60 * 1000L; // 15 分钟
OneTimeWorkRequest myWorkRequest = new OneTimeWorkRequest.Builder(MyWorker.class)
.setConstraints(new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build())
.build();
使用 WorkManager 的 enqueue 方法安排任务。例如,以下代码将在设备连接到 Wi-Fi 时执行 MyWorkRequest:
import androidx.work.WorkManager;
WorkManager workManager = WorkManager.getInstance(context);
workManager.enqueue(myWorkRequest);
注意:如果你的应用在电池优化模式下运行,WorkManager 将自动处理电池优化设置。WorkManager 会尝试在满足约束条件的情况下执行任务,即使设备处于电池优化模式下。但是,如果用户明确禁止了后台执行任务,WorkManager 将无法执行任务。因此,建议在应用中引导用户允许后台执行任务,以确保任务的顺利执行。