Аварийный диспетчер работает только в первый раз, после чего срабатывает сразу

Я пытаюсь создать метод тревоги в Android, он получает определенную дату / время и должен что-то делать в это конкретное время.

теперь в первый раз все работает нормально, потом сразу же срабатывает даже мысль, что указанное время в будущем.

вот мой код:

public void CreateAlarmUTC(ScheduleRequest mrequest)
{
    AlarmManager alarmMgr;
    PendingIntent alarmIntent;
    Context context;

    int index = mrequest.Index;
    context = getApplicationContext();


    ScheduledDate date = SchMs.get(mrequest.Index).ScheduledDate;
    String dat = date.calendar.getTime().toGMTString();

    int uniqueTime = date.Minutes+date.Day*10+date.Year*100+date.Hour*1000+date.Month*10000;

    alarmMgr = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(ALARM_SERVICE);
    intent.putExtra("index", index);

    alarmIntent = PendingIntent.getBroadcast(context, uniqueTime, intent, 0);


    alarmMgr.set(AlarmManager.RTC_WAKEUP, date.calendar.getTimeInMillis(), alarmIntent); 
}

ScheduleRequest - это класс, который я создал, и он имеет индекс, указывающий на место объекта в массиве с именем SchMs.

ScheduledDate - это класс, который я создал, у него есть объект Calendar, называемый calendar.

Вот как я создаю календарь в ScheduledDate:

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MINUTE, time_timePicker.getCurrentMinute());
    cal.set(Calendar.HOUR_OF_DAY, time_timePicker.getCurrentHour());
    cal.set(Calendar.DAY_OF_MONTH, time_datePicker.getDayOfMonth());
    cal.set(Calendar.MONTH, time_datePicker.getMonth());
    cal.set(Calendar.YEAR, time_datePicker.getYear());

time_timePicker - это TimePicker в моей деятельности.

time_datePicker - это DatePicker в моей деятельности.

Есть идеи? У вас есть лучший способ выполнить определенное задание в определенное время только один раз?

Спасибо

1 ответ

Наконец после отладки я обнаружил, что затмение по какой-то причине добавляло на день больше, чем я хочу, только в первый раз. Например, если я выберу 14/09/2014 (ДД / ММ / ГГГГ), предполагается, что я хочу 15/09/2014, поэтому мне пришлось сделать свой ScheduledDate.calendar как Today-1:

    cal.set(Calendar.DAY_OF_MONTH, time_datePicker.getDayOfMonth()-1);

После возобновления затмения и дополнительной отладки я обнаружил, что оно вернулось к нормальному состоянию, и я должен сохранить его в первоначальном виде:

    cal.set(Calendar.DAY_OF_MONTH, time_datePicker.getDayOfMonth());

так что теперь это работает просто отлично.

** Пример выше, теперь работает просто отлично.

Другие вопросы по тегам