Как вернуться к деятельности, закрывающей промежуточные действия? - PullRequest
2 голосов
/ 07 ноября 2019

Мне нужно вернуться к основному действию моего приложения, но для этого мне нужно закрыть все действия между текущим действием и основным действием.

Я пробовал с этим:

Intent intent = new Intent(getActivity(), MainMenuActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity( intent );

Проблема в том, что при этом основное действие также закрывается и снова открывается, вызывая onDestroy () в основном действии судьбы. Мне нужно вернуться к нему, не закрывая и не открывая его снова. Как этого добиться?

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Документация в FLAG_ACTIVITY_CLEAR_TOP говорит

Текущий запущенный экземпляр [...] либо получит новое намерение, которое вы здесь начинаете, в своем методе onNewIntent ()или будь сам закончен и перезапущен с новым намерением. Если он объявил свой режим запуска «множественным» (по умолчанию), и вы не установили FLAG_ACTIVITY_SINGLE_TOP в том же самом намерении, то он будет завершен и воссоздан;для всех других режимов запуска или если установлен FLAG_ACTIVITY_SINGLE_TOP, то это намерение будет доставлено в onNewIntent () текущего экземпляра.

В вашем случае, я предполагаю, что у вашего MainMenuActivity есть режим "множественного запуска". Поскольку вы не установили FLAG_ACTIVITY_SINGLE_TOP, он был завершен и перезапущен.

Поэтому, если вы используете

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP);

, то, согласно документации, экземпляр MainMenuActivity сохранит свое состояние и *Будет вызываться 1018 *.

Примечание: вы можете использовать setIntent(), чтобы сделать Intent, который передается в onNewIntent() "*" 1026 * из Activity

0 голосов
/ 07 ноября 2019

Вы пытались установить launchMode для MainActivity. Обратите внимание, что это должно быть сделано для всех транзакций в пределах Activity. Проверьте опции из документации .

Инструкция по запуску действия. Есть четыре режима, которые работают вместе с флагами активности (константы FLAG_ACTIVITY_ *) в объектах Intent, чтобы определить, что должно произойти, когда действие вызывается для обработки намерения. Это:

"standard"
"singleTop"
"singleTask"
"singleInstance"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...