С FLAG_ACTIVITY_CLEAR_TOP android документация:
FLAG_ACTIVITY_CLEAR_TOP
public static final int FLAG_ACTIVITY_CLEAR_TOP
Если он объявил, что его режим запуска будет «несколько» (по умолчанию), и вы не установили FLAG_ACTIVITY_SINGLE_TOP в том же самом намерении, тогда оно будет закончено и воссоздано; для всех других режимов запуска или если установлен FLAG_ACTIVITY_SINGLE_TOP, то это намерение будет доставлено в onNewIntent () текущего экземпляра.
Что это значит?
- Если режим запуска вашей деятельности «несколько / стандарт / по умолчанию» И вы не установите
FLAG_ACTIVITY_SINGLE_TOP
в том же намерении, то оно будет завершено и воссоздано. - Если режим запуска ваша деятельность не является «множественной / стандартной / стандартной» ИЛИ , которую вы задали
FLAG_ACTIVITY_SINGLE_TOP
в том же намерении, тогда это намерение будет доставлено в onNewIntent()
.
* 1028 текущего экземпляра. * Поскольку ваша MainActivity имеет режим запуска «по умолчанию», и вы не задаете
FLAG_ACTIVITY_SINGLE_TOP
в том же самом намерении, поэтому оно будет завершено и создано заново.
Но вы хотите, чтобы пользователи вернулись к текущему экземпляру MainActivity, поэтому вам нужно установить FLAG_ACTIVITY_SINGLE_TOP
в том же ключе.
Просто измените код с
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
на
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);