Как управлять стеком активности / очистить стек активности в Android - PullRequest
1 голос
/ 16 августа 2011

У меня есть приложение, которое выглядит следующим образом (Домашняя страница - запуск):

D
C
B
A
Home

Мой поток выглядит следующим образом:

Пользователь начинает действие A с Home, которое переходит к B и C. Когда пользователь покидает действие C, я хочу, чтобы A, B и C были уничтожены. То есть, если пользователь нажимает BACK в действии D, он возвращается к Home.

Пользователь должен иметь возможность нормально контролировать поток программ с помощью действий A, B и C. Поэтому, если они нажимают кнопку «Назад» в действии C, происходит возврат к действию B.

Я смотрел на флаги Intent, такие как CLEAR_TOP и NEW_TASK, но, похоже, ни один из них не делает то, что я хочу.

Буду признателен за любую помощь!

Ответы [ 2 ]

4 голосов
/ 16 августа 2011

Возможно, вы ищете FLAG_ACTIVITY_TASK_ON_HOME?Для него требуется уровень API 11: (

для уровня API <11, это можно сделать: </p>

при запуске действия B и C используйте startActivityForResult (). При запуске действия D сделайте это:

startActivity(D);
setResult(KILL_YOURSELF); //KILL_YOURSELF is some arbitrary int that you use to identify that the other activities should exit
finish(); //finish the activity

Это убьет действие C. Затем в действии A и B переопределите onActivityResult следующим образом:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(resultCode == KILL_YOURSELF) {
            setResult(KILL_YOURSELF);
            finish();
        }
    }

Таким образом, действие B завершится, что, в свою очередь, вызовет onActivityResult вА, так оно и закончится.

0 голосов
/ 17 августа 2011

Просто перехватить кнопку "Назад" в упражнении D, а после перехвата кнопки "Назад" перейдите к домашнему заданию. Возможно, вы не захотите завершить действие «D», когда идете к домашнему заданию.

...