2012-05-02 4 views
2

Моя цель - запустить будильник для каждого события от eventsDb.getFavouriteEvents(), но только один уволен каждый раз.Только один аварийный сигнал, когда установлены несколько из них

По-моему, это может быть вызвано установкой PendingIntent.FLAG_UPDATE_CURRENT, но мне нужен этот флаг для отправки дополнительных заданий с намерением. Есть ли способ не устанавливать этот флаг и до сих пор отправлять дополнения с намерением?

Я хранение PendinIntents в коллекции (pendingIntents), потому что я их отмены в onDestroy() этого Service класса.

Это код из onCreate():

for(Event event : eventsDB.getFavouriteEvents()) { 
    Intent intent = new Intent(AlarmReciever.ONCOMING_EVENT); 
    intent.putExtra(Event.TITLE, event.getTitle()); 

    PendingIntent pendingIntent = PendingIntent.getBroadcast(EventAlarmService.this, 0, intent, 
    Intent.FLAG_GRANT_READ_URI_PERMISSION | PendingIntent.FLAG_UPDATE_CURRENT); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, event.getTime(), pendingIntent); 

    pendingIntents.add(pendingIntent); 
} 

Спасибо за помощь!

ответ

5

PendingIntent будет перезаписан при отправке, если они имеют один и тот же код. Изменение кода для каждого намерения при отправке должно исправить эту проблему.

+2

Так вот для чего нужны 'requestCodes'! Спасибо:) –

+0

или вы можете использовать различные действия по намерениям, чтобы их отличить. PendingIntent с таким же намерением перезаписывает предыдущий. –