Я знаю, что подобные вопросы уже задавались много раз, но мой немного отличается.Например, у меня есть дерево действий типа A (корневая активность) -BCDE (A запускает B, B запускает C и т. Д.).Также у меня есть две кнопки, которые могут запускать действия F и G, они доступны везде (они похожи на меню и их launchMode = "singleTask")
Если одно из "специальных" действий вызывается из BCD или E,появится всплывающее окно с текстом «Вы действительно хотите испортить процесс бронирования?».Если пользователь нажимает «да», то изменения активности на «G», действия BCD и E должны быть удалены из стека активности, и повторное нажатие «кнопки назад» возвращает пользователя к операции A (или F, если G вызывается из F).
Я мог бы сделать это, установив флаг "Intent.FLAG_ACTIVITY_CLEAR_TOP", но это не подходит, потому что мне нужно как-то определить, была ли G-операция вызвана из одного из B / C / D / E-действий.Если это не так (я имею в виду, что он вызывался из действий A или F), тогда кнопка «Назад» должна работать как обычно.
Я уже пробовал: broadcastRecievers через файл манифеста - я пытался вызвать «finish ()»о деятельности BCDE от другого.Это немного глупо, потому что один из них уже может быть удален методом GC.
"getCallingActivity ()".Не могу заставить это работать.Хотел сравнить, была ли вызывающая активность одной из B / C / D / E
"startActivityForResult (намерение, результат)" - она не работала (onActivityResult не вызывался), потому что у меня есть "launchMode ="singleTask "в моем файле манифеста для действий F и G.
Я также пытался создать новую задачу Task для дерева BCDE. Но понял, что она даже отображается как вторая задача в меню запуска.
Я буду очень признателен за любую помощь, даже теоретическую.