Подтвердить что ты не робот

Как убить действие при нажатии кнопки "Назад"?

У меня есть действие, которое, когда оно начинается, загружает изображение из Интернета. Чтобы сохранить память, когда активность нажата клавишей "Назад", я хочу, чтобы активность давала все данные, которые избавляются от всех строк и изображений, которые находятся в ней. Я решил, что лучший способ сделать это - просто убить деятельность.

Ну, я не могу понять, как обратный вызов при нажатии кнопки "Назад". Итак, я пытался использовать обратные вызовы onPause() и onStop() для этой задачи, но оба способа заставляют закрыть мое приложение. Вот код:

public void onPause() {
    this.finish();
}
public void onStop() {
    finish();
}

Я пробовал несколько вариантов этого, но никто из них, похоже, не работал. Есть идеи?

4b9b3361

Ответ 1

добавьте это в свою деятельность

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

Ответ 2

Простое переопределение метода onBackPressed:

    @Override
    public void onBackPressed() {
            super.onBackPressed();
            this.finish();
    }

Ответ 3

public boolean onKeyDown(int keycode, KeyEvent event) {
    if (keycode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
    }
    return super.onKeyDown(keycode, event);
}

Мое приложение закрыто вышеуказанным кодом.

Ответ 4

Прежде всего, finish() не уничтожает ваш процесс и освобождает память. Он просто удаляет активность из стека действий. Вам нужно будет убить процесс, на который отвечает куча вопросов (поскольку это задается несколько раз).

Но правильный ответ - Не делайте этого. ОС Android автоматически освободит память, когда ему понадобится память. Не освобождая память, ваше приложение запустится быстрее, если пользователь вернется к нему.

Пожалуйста, см. здесь за отличную рецензию на эту тему.

Ответ 5

Хорошо, если вы изучите структуру того, как работает жизненный цикл приложения, здесь, то вы узнаете, что onPause() вызывается, когда другая активность получает фокус, а onStop() вызывается, когда активность больше не видна.

Из того, что я еще узнал, вы можете вызвать finish() только из активности, которая активна и/или имеет фокус. Если вы вызываете finish() из метода onPause(), что означает, что вы вызываете его, когда активность больше не активна. поэтому вызывается исключение.

Когда вы вызываете finish() из onStop(), тогда действие отправляется в фоновый режим, поэтому оно больше не будет видимым, а затем это исключение.

Когда вы нажимаете кнопку back, вызывается onStop().

Скорее всего, Android автоматически сделает для вас то, что вы сейчас хотите делать.