Android WorkManager是一种用于处理后台任务的库,用于在不影响设备性能的情况下,优化应用程序性能和效率。Worker是一个WorkManager库中的抽象类,用于执行后台任务。重写doWork()方法以定义Worker应该执行的任务。
以下是一个简单的Worker示例,可以从后台线程中发送通知:
public class NotificationWorker extends Worker {
public NotificationWorker(
@NonNull Context context,
@NonNull WorkerParameters params) {
super(context, params);
}
@Override
public Result doWork() {
showNotification();
return Result.success();
}
private void showNotification() {
// 显示通知代码
}
}
使用WorkManager来执行后台任务,可以使用下面的代码将Worker调度到后台:
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
OneTimeWorkRequest notificationWork =
new OneTimeWorkRequest.Builder(NotificationWorker.class)
.setConstraints(constraints)
.build();
WorkManager.getInstance().enqueue(notificationWork);
这将把NotificationWorker添加到WorkManager的队列中,WorkManager将在满足指定的约束条件后自动触发Worker。
Worker还可以配置为周期性地运行,而不是仅运行一次。例如:
PeriodicWorkRequest notificationWork =
new PeriodicWorkRequest.Builder(NotificationWorker.class, 1, TimeUnit.HOURS)
.setConstraints(constraints)
.build();
这个示例将NotificationWorker配置为每小时运行一次。