有没有办法在指定时间的同一天和每个结果日运行任务?

时间:2017-03-01 10:10:39

标签: android android-service scheduled-tasks android-jobscheduler android-job

有没有办法在指定时间的同一天和每个结果日运行任务?我正在使用名为" android-job"因为即使在设备重启后它仍会保留预定的作业。我一直在努力使这个库适用于我的用例而没有运气。

注意:最终目标是每天在指定时间启动和停止后台服务。例如,我想在晚上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

1 个答案:

答案 0 :(得分:1)

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

https://developer.android.com/reference/android/app/AlarmManager.html