android - 为什么我的 AlarmManager 会立即启动?

标签 android time calendar alarmmanager alarm

我正在尝试构建一个警报应用程序。我之前让闹钟工作,我可以设置不同的时间,闹钟会适本地响起。然后我将 ChangeAlarmActivity 的布局更改为 TableLayout,现在它不起作用?我没有碰代码。这是我设置闹钟的方式:

Intent alarmIntent = new Intent(ChangeAlarmActivity.this, AlarmReceiver.class);
PendingIntent pendingAlarmIntent = PendingIntent.getBroadcast(ChangeAlarmActivity.this, (int)alarm.getID(),
        alarmIntent, 0);

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
System.out.println("Alarm time: " + hour + ":" + min);
Calendar alarmCal = Calendar.getInstance();
//alarmCal.setTimeInMillis(System.currentTimeMillis());
alarmCal.set(Calendar.HOUR_OF_DAY, hour);  
alarmCal.set(Calendar.MINUTE, min);        
//alarmCal.set(Calendar.SECOND, 0);

alarmManager.set(AlarmManager.RTC_WAKEUP,
        alarmCal.getTimeInMillis(),
        pendingAlarmIntent);

最佳答案

可能是因为您的小时和分钟已经过去了。

假设现在是您当前时区的 16:07(使用 24 小时制),您执行此代码时 hour3min27。 03:27 是过去,因此警报会立即触发。

在调用了两次 set() 之后,看看时间是否比现在早,如果是,再 add() 一天。

关于android - 为什么我的 AlarmManager 会立即启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201148/

相关文章:

android - 如何将公历日期转换为伊斯兰(回历)日期?

android - 如何设置自定义zip文件的mime类型?

java - 构造函数不会运行它的代码

c++ - 在 clock_gettime() 中使用 _COARSE 变体仍然调用 sys_clock_gettime() 系统调用

excel - 如何在 Outlook 2007 中使用 VB 代码使用 sendonbehalfof 作为代表发送一系列 session 邀请

java - Android 日历序列化与 Java 6 不兼容

android - 菜单项点击,Fragments显示

android - 在哪里放置从 ecplise 中的官方 Android 开发人员网站下载的东西(.rar 文件中的图标、颜色、模板)

ruby - Ruby 中 DateTime 和 Time 的区别

php - 通过时间戳的实时统计/增量器