AlarmManager在奥利奥中安排长时间任务的替代方案是什么



我正在创建一个应用程序,每天早上8:00自动将android设备设置为静音模式?我使用了AlarmManager,Job Scheduler和前台服务,但它不会在android 8或更高版本上工作。。我也使用WorkManager,但WorkManager需要某些约束才能运行作业。。plZzz帮助我

我建议使用Worker,它与WorkManager相比更简单,但没有强制约束。WorkerWorkManager通过下放到AlarmManager自动处理较低版本的SDK。

我已经用Worker替换了我的应用程序的AlarmManager,它对于周期性任务来说要稳定得多。

您只需要一个工人级MyPeriodicWorker.class:

public class MyPeriodicWork extends Worker {
private static final String TAB = MyPeriodicWork.class.getSimpleName();
public MyPeriodicWork(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}

@NonNull
@Override
public Result doWork() {
Log.e(TAB,"PeriodicWork in BackGround");
// Run your task here
return Result.success();
}
}

以及从另一个类调用的CCD_ 8实例。在您的情况下,您需要用于定期任务的PeriodicWorkRequest。如果您希望任务在指定的时间运行,则必须指定flex的参数(提前<5分钟的最小flex(:

PeriodicWorkRequest mPeriodicWorkRequest = new PeriodicWorkRequest.Builder(MyPeriodicWorker.class,
periodMS, TimeUnit.MILLISECONDS, periodFlex, TimeUnit.MINUTES)
.addTag("PeriodicWorkRequest")
.build();

以上就是您使用它所需要的全部内容,然后使用WorkManagerenqueue启动。

WorkManager.getInstance(context).enqueue(mPeriodicWorkRequest);

最新更新