Android 重复出现问题(AlarmManager)

Android 重复出现问题(AlarmManager),android,alarmmanager,Android,Alarmmanager,我正在构建一个应用程序,在一段时间后必须显示通知,因为我使用了AlarmManager。 要每15分钟收到一次通知,我们必须这样做: mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 900000, pi); 对于一天,我们有86400000作为价值。我的想法是每周(将86400000乘以7)和每月(将86400000乘以28)也发出通知。问题在于月份常数,我有: The literal 24192

我正在构建一个应用程序,在一段时间后必须显示通知,因为我使用了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发出长时间通知?有解决办法吗? 非常感谢。 编辑:


这是可能的(只要接收的长度与参数相同),但是您应该编写
2419200000
,而不是
241920000L
,因为2419200000对于int太大,并且任何整数常量都被视为
int
,因此您需要添加
L
,以指示此数字很长。

这是可能的(作为参数接收long as),但是您应该写入
2419200000
,而不是
241920000L
,因为2419200000对于int太大,并且任何整数常量都被视为
int
,因此您需要添加
L
,以指示此数字很长。

Aha,好技巧;)。非常感谢你。我对乘法的看法是好的还是有用的?在官方纪录片中,最大值只有一天。@androniennn-事实上,即使是乘法也无济于事,因为它会溢出,你也必须在乘法中使用
L
,要指示您将长数字相乘而不是
int
sSo,我必须在day和week的其他值
86400000
604800000
中添加
L
?我没有任何错误:(请看我编辑的帖子)如果乘法结果大于
int
最大值,那么是的。否则-not.Clear;)。所以L将是最近的一个(大于int)。非常感谢你。啊哈,好把戏。非常感谢你。我对乘法的看法是好的还是有用的?在官方纪录片中,最大值只有一天。@androniennn-事实上,即使是乘法也无济于事,因为它会溢出,你也必须在乘法中使用
L
,要指示您将长数字相乘而不是
int
sSo,我必须在day和week的其他值
86400000
604800000
中添加
L
?我没有任何错误:(请看我编辑的帖子)如果乘法结果大于
int
最大值,那么是的。否则-not.Clear;)。所以L将是最近的一个(大于int)。非常感谢你。
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");