我正在开发一个Android应用程序,用于每天,每周,每月设置警报。通过将给定日期和时间转换为毫秒,前两个工作正常。但是,当我试图每月做同样的事情时,它不起作用。日期格式完全不同。
我将其设置如下,
Alarmtimefor30具有给定的日期(以毫秒为单位)。
am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimefor30, 30*1440*60000 , pi);
我将intervalMillis设为30 * 1440 * 60000,结果为2592000000,即30天(毫秒)。当我尝试打印30 * 1440 * 60000时,结果为1702967296.我不确定会出现什么问题。
是否有其他方法可以设置月度闹钟(每月特定日期和时间触发)?
请帮忙!谢谢!
答案 0 :(得分:6)
默认情况下,Java中的整数文字类型为int
,这是一个32位数字。将int
乘以int
时,结果也是int
,因此您的结果会被截断。显然setRepeating
的参数是long
,但这并不意味着编译器会为你解决这个问题 - 你的乘法仍然会被截断。
解决方案是明确强制文字为long
类型,这是一个64位数字:
am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimefor30, 30L*1440L*60000L , pi);