Запретить кнопку «Назад» закрыть мое приложение - PullRequest
7 голосов
/ 29 июня 2011

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

/* Prevent app from being killed on back */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        // Back?
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // Back
            moveTaskToBack(true);
        }

        // Return
        return super.onKeyDown(keyCode, event);

    }

Это не работает. Приложение настроено на совместимость с Android 1.6 (API Level 4). Нажатие на иконку моего приложения перезапускает мое приложение во время действия Splash (которое является основным). Как я могу предотвратить закрытие моего приложения на спине?

Ответы [ 4 ]

11 голосов
/ 13 мая 2014

Более краткое решение: -

@Override
public void onBackPressed() {
    // do nothing. We want to force user to stay in this activity and not drop out.
}
9 голосов
/ 29 июня 2011

Вы пытались поместить вызов super в блок else, чтобы он вызывался только в том случае, если ключ не KEYCODE_BACK?

/* Prevent app from being killed on back */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        // Back?
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // Back
            moveTaskToBack(true);
            return true;
        }
        else {
            // Return
            return super.onKeyDown(keyCode, event);
        }
    }

Честно говоря, вы не можете полагаться на это, потому что, как только ваше приложение будет помещено в фоновый режим, в любой момент оно может быть переработано для восстановления системой памяти.

2 голосов
/ 29 июня 2011

Даже если бы вы могли это сделать, вы не должны. Заставлять пользователей постоянно держать ваше приложение в памяти не очень хорошая идея, и это только раздражает их.

0 голосов
/ 20 сентября 2017

Если необходимо вернуться назад и предотвратить закрытие, в Android WebView используйте это:

@Override
public void onBackPressed() {
    if (mWebView.canGoBack()) {
        mWebView.goBack();
        return;
    }

    // Otherwise defer to system default behavior.
    super.onBackPressed();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...