Вот обходной путь, который я уже нашел.Некоторые другие обходные пути, которые я видел, включали просмотр текущих выполняемых задач.Однако я действительно не хотел запрашивать другое разрешение (GET_TASKS) у пользователя, чтобы обойти это.
Пожалуйста, дайте мне знать, если вы видите в этом какие-либо дыры.
В методе onCreate основного / корневого действия проверьте, установлено ли в намерении FLAG_ACTIVITY_BROUGHT_TO_FRONT и, если это так, вызовите finish ().Это затем выталкивает дополнительный экземпляр A из стека [A> B> A] становится [A> B] и с точки зрения пользователей запускается в действие, которое они ожидали.
Кажется, что работает ввсе мои тесты до сих пор.Мое единственное беспокойство заключается в том, что если есть какой-то странный случай, когда кто-то запускает, всегда будет отмечать запуск с FLAG_ACTIVITY_BROUGHT_TO_FRONT, даже если приложение еще не было в задаче, и, следовательно, полностью заблокирует их, потому что оно будет вызывать finish () и не иметьчто-либо в стеке, к которому нужно вернуться.
-
В соответствии с просьбой в комментариях, вот как вы можете проверить, является ли намерение определенным флагом:
int flags = intent.getFlags();
boolean hasFlag = flags & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT == Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
--
Также я должен отметить, что я все еще вижу, что эта проблема иногда возникает с этим исправлением на месте.Это не кажется идеальным решением.