#android #events #notifications #statusbar
#Android #Мероприятия #уведомления #строка состояния
Вопрос:
когда пользователь открывает / просматривает уведомления в строке состояния и нажимает «Очистить» (что удаляет все уведомления в строке состояния), получает ли служба, создавшая одно из уведомлений в строке состояния «Очищено», уведомление об этом, и если да, то каким образом?
в противном случае, как приложение может узнать, что пользователь очистил одно из уведомлений в строке состояния приложения? (кажется, я где-то читал, что есть способ опросить статус уведомления, но я предпочитаю не опрашивать его, а вместо этого получать информацию о том, когда оно очищено)
Ответ №1:
При использовании сервиса, вероятно, лучше использовать одно уведомление и установить его флаг как
notification.flags |= Notification.FLAG_ONGOING_EVENT |
Notification.FLAG_NO_CLEAR;
таким образом, оно будет находиться в группе текущих уведомлений и не будет доступно для очистки. Таким образом, вы можете управлять, когда и что показывать, когда скрывать и т.д. Кроме того, из-за этого gc не будет вызываться через ресурсы вашей службы.
Комментарии:
1. есть ли метод, который я могу использовать для этого, на случай, если однажды кто-то попытается исправить эту проблему со сломанной инкапсуляцией уведомления?
2. Я не понимаю, что вы имеете в виду. Вы можете создать
setupNotification
метод, и среди других базовых настроек вы также можете установить этот. Надеюсь, я не понял ваш вопрос неправильно.3. 1) все в порядке. просто флаги не должны быть общедоступными — это плохой дизайн (нарушенная инкапсуляция), и я бы предпочел не манипулировать этим непосредственно в своем коде, но я думаю, что другого выбора нет 2) я пока не получил ответа на свой вопрос. но вы предоставили мне хорошее временное решение, пока я не получу ответ (я не возражаю, что пользователь очистит уведомление моего приложения, пока мой код получает уведомление об этом) 3) спасибо за ваш ответ. я благодарен вам за это 🙂