每月设置闹钟android

时间:2013-07-25 12:22:40

标签: java android math alarmmanager

我正在开发一个Android应用程序,用于每天,每周,每月设置警报。通过将给定日期和时间转换为毫秒,前两个工作正常。但是,当我试图每月做同样的事情时,它不起作用。日期格式完全不同。

我将其设置如下,

Alarmtimefor30具有给定的日期(以毫秒为单位)。

  am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimefor30, 30*1440*60000 , pi);

我将intervalMillis设为30 * 1440 * 60000,结果为2592000000,即30天(毫秒)。当我尝试打印30 * 1440 * 60000时,结果为1702967296.我不确定会出现什么问题。

是否有其他方法可以设置月度闹钟(每月特定日期和时间触发)?

请帮忙!谢谢!

1 个答案:

答案 0 :(得分:6)

默认情况下,Java中的整数文字类型为int,这是一个32位数字。将int乘以int时,结果也是int,因此您的结果会被截断。显然setRepeating的参数是long,但这并不意味着编译器会为你解决这个问题 - 你的乘法仍然会被截断。

解决方案是明确强制文字为long类型,这是一个64位数字:

am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimefor30, 30L*1440L*60000L , pi);