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

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

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

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

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

Solutions Collecting From Web of "Как убить действие при нажатии кнопки «Назад»?"

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

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

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

  @Override public void onBackPressed() { super.onBackPressed(); this.finish(); } 
 public boolean onKeyDown(int keycode, KeyEvent event) { if (keycode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(true); } return super.onKeyDown(keycode, event); } 

Приложение закрыто с кодом выше.

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

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

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

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

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

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

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

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