Проблема с повторением (AlarmManager) - PullRequest
1 голос
/ 16 августа 2011

Я создаю приложение, которое должно показывать уведомление через некоторое время, для этого я использовал 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 Ответ

5 голосов
/ 16 августа 2011

Возможно (так как setRepeating() получает long в качестве параметра), но вместо 2419200000 вы должны написать 2419200000L, поскольку 2419200000 слишком велико для int, и любая целочисленная константа обрабатываетсякак int, поэтому вам нужно добавить L, чтобы указать, что это число длинное.

...