Android, какие флаги Intent рекомендуются для действий, запускаемых уведомлениями

Я сталкиваюсь со специфической проблемой с приложением, которое имеет несколько действий. У меня есть класс диспетчера экрана, который связан со службой. Сервис опрашивает сервер на предмет данных. Диспетчер экрана запускает действие A, B или C на основе данных. Это также позволит пользователю выбрать отображение других действий или может автоматически заменить действие на основе новых данных из службы. В настоящее время вся навигация работает отлично, и если пользователь нажимает кнопку «Домой», соответствующая активность возвращается на передний план, когда пользователь нажимает значок приложений на главном экране Android или в списке недавно запущенных приложений.

Затем мне пришлось реализовать новую функцию для отображения значка и уведомления. Сначала я реализовал это, отображая уведомление только тогда, когда действия больше не были видны, установив его в каждой операции onPause. Работал как шарм и дал пользователю третий вариант для повторного отображения приложения после нажатия кнопки «Домой». Однако, если данные с сервера (когда приложение не отображается) приводят к тому, что менеджер экрана обновляет отображаемое действие, у меня возникают проблемы. Я думаю, что мой стек активности облажался. С тех пор я попробовал немного другую модель, где менеджер экрана обрабатывает уведомления и всегда отображает уведомление, обновляя его новым намерением всякий раз, когда обновляется действие, но оно все еще не обрезает его.

Когда приложение свернуто и данные изменяются, я вижу, что менеджер экрана вызывает startActivityForResult для новой активности, и кажется, что Android знает, что мы свернуты, и не отображает активность. Затем я могу также вызвать диспетчер экрана, чтобы завершить старое задание.

В настоящее время для каждого действия установлен флаг singleTop в манифесте и FLAG_ACTIVITY_SINGLE_TOP в коде. Когда данные на сервере не изменились, я запускаю приложение, используя любое из вышеперечисленного, получаю то, что ожидаю, и вызывается onNewIntent для Activity. Однако, когда данные изменились, и пользователь вызывает приложение через уведомление, оно вызывает действия «onCreate». Упражнение действительно запускается и запускается, но затем нажатие возвращает меня к тому, что кажется другим экземпляром того же Упражнения, а не к выходу. Я просто более внимательно посмотрел на свой logcat и вижу 2 вызова onResume в Activity, но потом никаких двойных.

Я чувствую, что, может быть, я просто упускаю что-то простое, например, другой флаг намерения в намерении уведомления? Спасибо за любые идеи!

Ответы на вопрос(1)

Ваш ответ на вопрос