2015-01-22 4 views
3

В моей активности создается несколько уведомлений.Несколько ожидающих намерений?

Вот как я сейчас делаю это, по разным resultIntents:

PendingIntent resultPendingIntent = 
    PendingIntent.getActivity(
    context, 
    0, 
    resultIntent, 
    PendingIntent.FLAG_UPDATE_CURRENT 
); 

Теперь, так как флаг является обязательным, я вынужден выбрать из the four flags. Что мне делать, если я хочу, чтобы все они работали самостоятельно, а новое уведомление не затрагивается предыдущим.

ответ

3

Решение было найдено здесь: here.

Вы имеете использовать SetAction на намерении уникального значения, так что не будет никакого согласующего PendingIntents

Вот что я использовал:

setAction(Long.toString(System.currentTimeMillis())) 
+1

Это не имеет никакого смысла. Если вы всегда устанавливаете ACTION на уникальное значение, установка 'PendingIntent.FLAG_UPDATE_CURRENT' бесполезна, так как ** никогда не будет соответствовать' PendingIntent' **. Установка уникальной строки ACTION гарантирует, что вызов 'PendingIntent.getActivity()' всегда будет ** возвращать новый 'PendingIntent'. –

+0

Да, это то, что я действительно требовал. Я искал способ никогда не иметь подходящий PendingIndent. Ответ имеет флаг только потому, что я процитировал его из другого ответа stackoverflow. Извините, если это вызвало путаницу. –

+1

Вы можете отредактировать свой ответ и удалить флаг. Как я уже сказал, флаг не имеет смысла и может смутить других людей. –

1

Из официальной документации

Если вам действительно нужно несколько разных объектов PendingIntent одновременно (например, чтобы использовать как два уведомления, которые одновременно отображаются одновременно), тогда вам нужно будет убедиться, что есть что-то t шляпа отличается от них, чтобы связать их с разными PendingIntents. Это может быть любой из атрибутов Intent, рассмотренных Intent.filterEquals или разных целых кодов кода, переданных в getActivity (Context, int, Intent, int), getActivities (Context, int, Intent [], int), getBroadcast (Context, int , Intent, int) или getService (Контекст, int, Intent, int).

Intent.filterEquals документация:

Определить, если два намерения являются одинаковыми для целей намерения разрешения (фильтрации). То есть, если их действие, данные, тип, класс и категории одинаковы. Это не сравнивает никаких дополнительных данных, включенных в намерения.

Если вам нужно неограниченное количество PendingIntents, я бы рекомендовал использовать Intent.setData для своего рода уникального значения. Если вы можете сгруппировать их, используйте setType или addCategory, чтобы уменьшить количество уникальных ожидающих запросов.

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