AlarmManager不起作用,延迟计划任务

时间:2018-12-14 10:38:38

标签: android scheduled-tasks alarmmanager scheduler

我正在使用“日历”对话框询问用户时间的调度程序应用程序。然后我使用AlarmManager安排任务,您可以在下面看到代码。

    Log.d("SchedulerTag", "sendMessageLater: " + new Date(timeInMillis));
    Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
    intent.putExtra("message", message_string);
    intent.putExtra("number", end_number);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent);
        Toast.makeText(this, "Message Scheduled Successfully", Toast.LENGTH_SHORT).show();
    } else {
        alarmManager.set(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent);
        Toast.makeText(this, "Message Scheduled Successfully", Toast.LENGTH_SHORT).show();
    }

在此之后,我使用AlarmReceiver类(代码)收到了它

public void onReceive(Context context, Intent intent) {
    //some code her
}

问题是,无论选择什么时间,任务都不会在正确的时间安排,只有在10分钟后才被调用

我的清单包含接收者。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您可以使用JobScheduler重复执行任务。

ComponentName serviceComponent = new ComponentName(context, TestJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(15, serviceComponent);
builder.setMinimumLatency(500);
builder.setPersisted(true);

JobScheduler jobScheduler = (JobScheduler)context.getApplicationContext().getSystemService(JOB_SCHEDULER_SERVICE);
if (jobScheduler != null) {
    jobScheduler.schedule(builder.build());
}

TestJobService.class

公共类TestJobService扩展JobService {

@Override
public boolean onStartJob(JobParameters params) {
    // do your code when job scheduler fires.
    return false;
}

@Override
public boolean onStopJob(JobParameters params) {
    return true;
}

}