我正在创建一个应用程序,每天早上8:00自动将android设备设置为静音模式?我使用了AlarmManager,Job Scheduler和前台服务,但它不会在android 8或更高版本上工作。。我也使用WorkManager,但WorkManager需要某些约束才能运行作业。。plZzz帮助我
我建议使用Worker
,它与WorkManager
相比更简单,但没有强制约束。Worker
和WorkManager
通过下放到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();
以上就是您使用它所需要的全部内容,然后使用WorkManager
enqueue
启动。
WorkManager.getInstance(context).enqueue(mPeriodicWorkRequest);