AlarmManager立即触发警报(但不应该)

时间:2013-10-04 19:24:23

标签: android alarmmanager

我有一个scheduleAlarm类,它应该在特定时间设置闹钟,但是在调用方法后立即触发警报。我已经检查过提供的时间以毫秒为单位,所以我不知道发生了什么。

private void scheduleAlarm(int day, int startHour, int startMinute, String info) {

    AlarmManager mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    Calendar c = Calendar.getInstance();

    c.set(Calendar.DAY_OF_WEEK, day);
    c.set(Calendar.HOUR, startHour);
    c.set(Calendar.MINUTE, startMinute);

    Intent startIntent = new Intent(this, Recorder.class);
    startIntent.putExtra("info", "someinfo");

    Log.v("millis", String.valueOf(c.getTimeInMillis())); // time is okay
    Random mRandom = new Random();
    int randomInt = mRandom.nextInt();

    PendingIntent pendingIntent = PendingIntent.getService(this, randomInt, startIntent,PendingIntent.FLAG_UPDATE_CURRENT);
    mAlarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
}

1 个答案:

答案 0 :(得分:4)

确保为闹钟设置的时间是在当前时间之后。

有一种简单的方法可以检查。

只是做

Calendar.getInstance().getTimeInMilis() - c.getTimeInMillis()

记录此结果,您可以看到第二个结果是否在第一个结果之前。 可以说现在是4点,你设置当天和3点。它会立即激活。

除此之外,我认为没有理由失败。

测试的另一种方法是使用currentTime并添加10k毫秒,看看它是否在测试后10秒内激活。然后你确定在你的情况下设置的时间是错误的。