我正在构建一个必须在一段时间后显示通知的应用程序,因为我使用了AlarmManager。 要每15分钟发出一次通知,我们必须这样做:
mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 900000, pi);
有一天我们有86400000
作为价值。我的想法是每周也发出一个通知(乘以86400000与7)和每个月(乘以86400000与28)。问题是月份不变,我有:
The literal 2419200000 of type int is out of range
使用AlarmManager进行长时间通知是不可能的?有解决方案吗? 谢谢。 编辑:
if (Integer.valueOf(choix_notif) == 0)
{
mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 86400000, pi);
Log.d("DAY_REPEATING","OK");
}
else if (Integer.valueOf(choix_notif) == 1) {
mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 604800000, pi);
Log.d("WEEK_REPEATING","OK");
}
else if (Integer.valueOf(choix_notif) == 2) {
mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 2419200000L, pi);
Log.d("MONTH_REPEATING","OK");
答案 0 :(得分:5)
有可能(因为setRepeating()
收到长参数),但是你应该写2419200000
而不是2419200000L
,因为2419200000对于int来说太大了,任何整数常量都会被处理掉为int
,因此您需要添加L
来表示此数字很长。