Как очистить предыдущий стек действий и выйти из приложения на кнопку назад? - PullRequest
9 голосов
/ 11 мая 2011

У меня есть три вида деятельности:

A,B,C

A - домашний экран.

Действия запускаются следующим образом A->B->C

Если я прихожу на домашний экран с помощью кнопки, я хочу очистить стек операций / историю предыдущих действий, и он должен выйти из приложения.

Кто-нибудь может подсказать мне, как этого добиться?

Ответы [ 4 ]

14 голосов
/ 11 мая 2011

Очень просто: используйте intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); для намерения, использованного для начала действия A.

3 голосов
/ 02 июня 2011

Вы можете сделать следующее:
1. Установить clearTaskOnLaunch = "true" в AndroidManifest, в объявлении действия A
2. В действии C:

@Override
public void onBackPressed(){
    moveTaskToBack(true);
}

Так что, если пользователь нажимает назад - этовозвращается на домашний экран.
Если пользователь снова запускает приложение - стек задач очищается, и он переходит к корневому действию (A)

0 голосов
/ 11 мая 2011

Я думаю, что compostus верен, но если нет, из A вы можете запустить B с помощью startActivityForResult () и в onActivityResult () обработать полученное «сообщение».Деятельность B отправит сообщение «CLOSE_ACTIVITY», если была нажата кнопка «Назад».

0 голосов
/ 11 мая 2011

В упражнении A попробуйте это:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
                finish();
        }

        return super.onKeyDown(keyCode, event);
    }

Это должно гарантировать, что если вы нажмете кнопку "Назад", активность будет finish() ed.Если это действие находится внизу стека, finish должно выйти из действия.

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