Как я могу щелкнуть уведомление, вывести мое приложение на передний план, если необходимо, и сохранить стек таким, каким он был (даже когда приложение перешло в фоновый режим)?
У меня есть NotificationClickActivity
, запускается, когда пользователь нажимает на уведомление.
При нажатии на уведомление у меня есть два возможных сценария ios:
- Пользователь вышел из приложения
- Пользователь вошел в систему.
В первом сценарии NotificationClickActivity
запускает процесс входа в систему и получает результат. Если все в порядке, запускаю MainActivity
. Задача очищена, поэтому MainActivity
- единственное действие, которое у меня есть в задаче. В этом сценарии у меня нет проблем.
Во втором сценарии NotificationClickActivity
делает следующее:
finish()
startActivity(MainActivity.createIntent(this).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).putExtra("notification", notification))
С приведенным выше кодом, если приложение уже запущено (MainActivity
- это root и максимальная активность) и если на заднем или на переднем плане, у меня нет проблем. Вызывается MainActivity
onNewIntent
, и я могу делать что угодно с уведомлением. В этом случае я отправляю уведомление в репозиторий.
Проблема, с которой я сталкиваюсь, это когда у меня есть действия поверх MainActivity
. Представьте себе следующий стек:
MainActivity -> ActivityOne -> ActivityTwo -> ActivityN
С кодом, который у меня сейчас есть, если я нажму на уведомление, стек станет:
MainActivity -> ActivityOne -> ActivityTwo -> ActivityN -> MainActivity
Я хочу, чтобы стек оставался MainActivity -> ActivityOne -> ActivityTwo -> ActivityN
, но все же передать уведомление на MainActivity
, чтобы его можно было отправить в репозиторий.
Есть идеи, как я могу этого добиться?
Я уже некоторое время играл с флагами намерений, но без успех. Конечно, я делаю это без какой-либо видимой анимации или чего-то еще, чтобы пользователь не понимал, что происходит.