Как предотвратить несколько экземпляров Activity, когда оно запускается с разными намерениями

Я обнаружил ошибку в своем приложении, когда оно запускалось с помощью кнопки «Открыть» в приложении Google Play Store (ранее называлось Android рынок). Кажется, что для его запуска из Play Store используется другое намерение , чем для его запуска из меню значков приложений телефона. Это приводит к запуску нескольких копий одного и того же Activity, которые конфликтуют друг с другом.

Например, , если мое приложение состоит из Activity ABC, то эта проблема может привести к стеку ABCA.

Я пробовал использовать android: launchMode = "singleTask" для всех действий, чтобы решить эту проблему, но у него есть нежелательный побочный эффект очистки стека действий до корневого при каждом нажатии кнопки HOME.

Ожидаемое поведение: ABC -> HOME -> И когда приложение восстановлено, мне нужно: ABC -> HOME -> ABC

Есть ли хороший способ предотвратить запуск нескольких действий одного и того же типа, без возврата к корневому действию при использовании кнопки HOME?

116
задан Mr-IDE 18 July 2019 в 13:59
поделиться