Android 是否有办法在同一天和随后的每一天的指定时间运行一次任务?

Android 是否有办法在同一天和随后的每一天的指定时间运行一次任务?,android,android-service,scheduled-tasks,android-jobscheduler,android-job,Android,Android Service,Scheduled Tasks,Android Jobscheduler,Android Job,是否有办法在同一天和随后的每一天的指定时间运行一次任务?我正在使用一个名为“”的库,因为它即使在设备重新启动后也会保留计划的作业。我一直在努力使这个库为我的用例工作,但运气不佳 注意:最终目标是在每天指定的时间启动和停止后台服务。例如,我想在晚上8点停止服务,并在上午8点重新启动) 目前,我的代码如下所示: Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 20); calendar.se

是否有办法在同一天和随后的每一天的指定时间运行一次任务?我正在使用一个名为“”的库,因为它即使在设备重新启动后也会保留计划的作业。我一直在努力使这个库为我的用例工作,但运气不佳

注意:最终目标是在每天指定的时间启动和停止后台服务。例如,我想在晚上8点停止服务,并在上午8点重新启动)

目前,我的代码如下所示:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 20);
calendar.set(Calendar.MINUTE, 0);

int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);

long startMs = TimeUnit.MINUTES.toMillis(60 - minute) + TimeUnit.HOURS.toMillis((24 - hour) % 24);
long endMs = startMs + TimeUnit.MINUTES.toMillis(5);


int jobId = new JobRequest.Builder(TAG)
        .setExecutionWindow(startMs, endMs)
        .setPersisted(true)
        .setUpdateCurrent(updateCurrent)
        .build()
        .schedule();`
控制台输出:

jobInfo success, request{id=11, tag=job_demo_tag}, start 05:00:00, end 05:05:00, reschedule count 0

您可以为此浏览AlarmManager。它可以用于您希望在指定时间执行代码的情况,即使您的应用程序没有运行


是的,在尝试使用该库之前,我已经浏览了AlarmManager。据我所知,定时报警无法在设备重新启动后继续存在。这就是我想使用Library的原因,我认为可以通过实现引导接收器来实现。我明白了。例如,如果我安排一个任务在特定时间呼叫我的接收者(接收者执行一个任务),如果设备重新启动,我的接收者是否会再次收到意图并安排任务?这就是你要刺穿的吗?那可能有用。这应该行得通。我们已经在一个类似的(不确切的)用例中使用了这个逻辑。谢谢你的建议。我将测试这个逻辑,看看它是否适用于我的用例。我希望这个逻辑能起作用,因为我花了很多时间试图为我的应用程序实现这个用例:)