Android 当前和时间选择器时间警报之间的时间选择器差异

Android 当前和时间选择器时间警报之间的时间选择器差异,android,alarmmanager,alarm,Android,Alarmmanager,Alarm,我正在创建一个简单的时间选择器对话框,当用户设置时间时,我将该时间存储在日历实例中 public void onTimeSet(TimePicker timePicker, int i, int i1) { tpCalendar = Calendar.getInstance(); tpCalendar.set(Calendar.HOUR_OF_DAY, i); tpCalendar.set(Calendar.MINUTE, i1); tpCalendar.s

我正在创建一个简单的时间选择器对话框,当用户设置时间时,我将该时间存储在日历实例中

 public void onTimeSet(TimePicker timePicker, int i, int i1) 
 {
    tpCalendar = Calendar.getInstance();
    tpCalendar.set(Calendar.HOUR_OF_DAY, i);
    tpCalendar.set(Calendar.MINUTE, i1);
    tpCalendar.set(Calendar.SECOND,0);
    updateReminder();
 }
并在updateReminder()方法中计算差异

根据差异,我设置了一个警报。我得到的是以毫秒为单位的正确差值(差异变量)。但问题是,在设置报警后,无论设置了什么差异,它都会在5秒钟后发出通知

在广播接收器中,我只创建一个通知。
谢谢你的帮助

我当时正在做一些事情,比如我制作闹钟的时候(在计时之后):


所以你们只需将新时间设置为日历,并将其传递给alarmManager?好的,我想你们需要传递两次之间的差。谢谢,它起作用了。@RahulBhavani很高兴它起到了作用,编码也很高兴)
private void updateReminder() 
{
    long currTime = System.currentTimeMillis();
    long diff = tpCalendar.getTimeInMillis() - currTime;
    long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diff);

    Intent reminderIntent = new Intent(this, ReminderReceiver.class);
      AlarmManager alarmManager = (AlarmManager)     getSystemService(Context.ALARM_SERVICE);

    alarmManager.set(AlarmManager.RTC_WAKEUP, diff,
            PendingIntent.getBroadcast(this, 1, reminderIntent,
            PendingIntent.FLAG_UPDATE_CURRENT));
}
String[] arrTime = time.split(":");
int hour = Integer.parseInt(arrTime[0]);
    int minute = Integer.parseInt(arrTime[1]);
    GregorianCalendar calendar = (GregorianCalendar) GregorianCalendar.getInstance();
    calendar.set(GregorianCalendar.DATE, calendar.get(GregorianCalendar.DATE));
    calendar.set(GregorianCalendar.HOUR_OF_DAY, hour);
    calendar.set(GregorianCalendar.MINUTE, minute);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);

    Intent intent = new Intent(this, AlarmReceiver.class);
    intent.putExtra("message", message);
    PendingIntent pIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);