重复出现问题(AlarmManager)

时间:2011-08-16 13:24:51

标签: android alarmmanager

我正在构建一个必须在一段时间后显示通知的应用程序,因为我使用了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");

1 个答案:

答案 0 :(得分:5)

有可能(因为setRepeating()收到长参数),但是你应该写2419200000而不是2419200000L,因为2419200000对于int来说太大了,任何整数常量都会被处理掉为int,因此您需要添加L来表示此数字很长。