2012-05-15 3 views
2

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

Как звонить 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 минут с уникальными кодами запросов.

ответ

2

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

Mulitple Instances of Pending Intent

+0

http://www.androiddiscuss.com/1-android-discuss/9703.html –

+1

http://stackoverflow.com/questions/3168484/pendingintent-works-correctly-for-the-first-notification-but -корректно для- –

+0

Пробовал уникальные коды запросов и по-прежнему имеет ту же проблему. Отредактированный вопрос. –

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

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

+0

0 может быть не лучшим образом. Но он работает 5 и 10 минут. Я попробую. Спасибо. –

+0

Ничего не изменилось, все еще не работает в течение 30 и 60 минут. Кстати, нет типов значений различий. –

 Смежные вопросы

  • Нет связанных вопросов^_^