我正在使用“日历”对话框询问用户时间的调度程序应用程序。然后我使用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分钟后才被调用
我的清单包含接收者。我在做什么错了?
答案 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;
}
}