Android хранит несколько идентификаторов уведомлений и позволяет отображать более 1 уведомления одновременно - PullRequest
1 голос
/ 27 ноября 2011

Я использую AsyncTask, который загружает файл apk, а затем устанавливает его методом post execute.

Pre Execute {

Get a notification variable from shared preference and adds +1 to it
Create a new notification based on this variable

}

Do InBackground {

 Update this notification based on its ID -1 (to refer to initial notification ID)

}

Post Execute {

Update this notification based on its ID -1 (to refer to initial notification ID)

}

В то же время, когда этот поток запущен (пример загрузкиочень большой файл по сети) Я бы позволил пользователю начать другую загрузку.В этом случае я хочу показать 2 уведомления, а не использовать один и тот же идентификатор уведомления.Каков наилучший способ иметь 2 уникальных идентификатора уведомления, которые не конфликтуют, когда я ссылаюсь на его идентификатор уведомления в цепочке «В фоновом режиме» и «После выполнения»?Спасибо

1 Ответ

2 голосов
/ 01 декабря 2011

Нашел решение после вздремнуть, чтобы отдохнуть. Должно быть, слишком устал, чтобы понять это

Я поместил локальную переменную private int notification_ID внутри каждого AsyncTask
После создания уведомления вставьте в общий доступ (Notification_ID + 1)
Do In Background и Post Execute по-прежнему используют эту приватную переменную при обновлении этого уведомления

Когда запускается новый поток AsyncTask, он сначала будет читать из общего предпочтения, которое будет новым значением (при условии, что сначала было 0, а вторым будет 0 + 1 = 1) Затем, когда его «В фоновом режиме» и «После выполнения» попытайтесь получить доступ к notification_ID, он будет обращаться к своей собственной закрытой переменной со значением 1, следовательно, не будет конфликтовать с первым или последующими уведомлениями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...