gpt4 book ai didi

java - AlarmManager 在 Oreo 中安排长时间任务的替代方案是什么?

转载 作者:行者123 更新时间:2023-11-30 04:59:03 26 4
gpt4 key购买 nike

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

最佳答案

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

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

您只需要一个 Worker 类 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();
}
}

和从另一个类调用的 WorkRequest 实例。在您的情况下,您需要一个 PeriodicWorkRequest 来执行重复性任务。如果您希望任务在指定时间运行(至少提前 <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);

关于java - AlarmManager 在 Oreo 中安排长时间任务的替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58561650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com