Я сталкиваюсь со специфической проблемой в приложении с несколькими активностями.У меня есть класс диспетчера экрана, который связан со службой.Сервис опрашивает сервер на предмет данных.Диспетчер экрана запускает действие A, B или C на основе данных.Это также позволит пользователю выбрать отображение других действий или может автоматически заменить действие на основе новых данных из службы.В настоящее время вся навигация работает отлично, и если пользователь нажимает кнопку «Домой», соответствующая активность возвращается на передний план, когда пользователь нажимает значок приложений на главном экране Android или в списке недавно запущенных приложений.
Затем мне пришлось реализовать новую функцию для отображения значка и уведомления.Сначала я реализовал это, отображая уведомление только тогда, когда действия больше не были видны, установив его в каждой операции onPause.Работал как шарм и дал пользователю третий вариант для повторного отображения приложения после нажатия кнопки «Домой».Однако, если данные с сервера (когда приложение не отображается) приводят к тому, что менеджер экрана обновляет отображаемое действие, у меня возникают проблемы.Я думаю, что мой стек активности облажался.С тех пор я попробовал немного другую модель, где менеджер экрана обрабатывает уведомления и всегда отображает уведомление, обновляя его новым намерением при каждом обновлении действия, но оно все еще не обрезает его.
Когда приложениесвернутые и измененные данные. Я вижу, как менеджер экрана вызывает startActivityForResult для новой активности, и кажется, что Android знает, что мы свернуты, и не отображает активность.Затем я также могу завершить вызов диспетчера экрана в старом верхнем действии.
В каждом действии в настоящее время установлен флаг singleTop в манифесте и FLAG_ACTIVITY_SINGLE_TOP в коде.Когда данные на сервере не изменились, я запускаю приложение, используя любое из вышеперечисленного, получаю то, что ожидаю, и вызывается onNewIntent для Activity.Однако, когда данные изменились, и пользователь вызывает приложение через уведомление, оно вызывает Activity onCreate.Упражнение действительно запускается и запускается, но затем нажатие возвращает меня к тому, что кажется другим экземпляром того же Упражнения, а не к выходу.Я просто более внимательно посмотрел на свой logcat и увидел 2 вызова функции onResume в Activity, но потом никаких двойных.Намерение?Спасибо за любые идеи!