Android: AlarmManager не работает с длинными интервалами

Я использую AlarmManager для транзакций обновления виджета. У меня есть разные значения интервала, такие как 5, 10, 15, 30 минут и т. Д.

Как позвонить AlarmManager:

alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);        

// Interval value, default 600 (600*1000 -> 10 min)
Long repeat = Long.parseLong(prefs.getString("update_preference", "600"));

// Set the manager
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi);

Итак, если пользователь выбирает 5 или 10 минут, все в порядке. Но если нет, я имею в виду, что пользователь выбирает большие значения, такие как 15, 30, 60 минут, MyService не работает, как только setRepetaing.

Какая разница или неправда?

Редактировать: он работает мгновенно ‹30 минут, но теперь работает более 30 минут с уникальными кодами запросов.


person Ogulcan Orhan    schedule 15.05.2012    source источник


Ответы (2)


Я думаю, вам нужно использовать уникальный код запроса в PendingIntent

Несколько экземпляров ожидаемого намерения

person Dheeresh Singh    schedule 15.05.2012
comment
stackoverflow.com/questions/3168484/ - person Dheeresh Singh; 15.05.2012
comment
Пробовал уникальные коды запросов и все еще имеет ту же проблему. Отредактированный вопрос. - person Ogulcan Orhan; 15.05.2012
comment
Вы использовали i.setAction(Long.toString(System.currentTimeMillis())) в сочетании с использованием FLAG_UPDATE_CURRENT, как указано в stackoverflow.... - person Dheeresh Singh; 15.05.2012

pi = PendingIntent.getService(context, 12345, i, PendingIntent.FLAG_UPDATE_CURRENT);   

Это может сработать, но «0» — не лучший выбор для уникального идентификатора.

person Thkru    schedule 15.05.2012
comment
0 может быть не лучшим вариантом. Но, это работает в течение 5 и 10 минут. Я попытаюсь. Спасибо. - person Ogulcan Orhan; 15.05.2012
comment
Ничего не изменилось, по прежнему не работает 30 и 60 минут. Кстати, нет разницы в типах значений. - person Ogulcan Orhan; 15.05.2012