Разница между onKeyDown() и onBackPressed()

Меня смущает использование onKeyDown() и onBackPressed(). Являются ли оба этих переопределяющих метода одинаковыми по функциональности и использованию? Если это не так, то как правильно использовать оба?

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


person Muahmmad Tayyib    schedule 25.10.2017    source источник
comment
@Hexfire СЭР!! .. вы пометили это как дубликат, ссылаясь на вопрос здесь, который запрашивает место реализации, но я спрашиваю, почему и когда, а не где   -  person Muahmmad Tayyib    schedule 25.10.2017
comment
@xamMTS Я убрал флаг.   -  person Hexfire    schedule 25.10.2017


Ответы (1)


onKeyDown() можно использовать для любой аппаратной клавиши на вашем Android устройстве, которая может быть кнопкой питания, кнопкой возврата или кнопкой громкости.

onBackPressed() вызывается только при нажатии кнопки «Назад».

Вот отличия:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // back was pressed
        return true;
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
      // volume up was pressed
    }
    return super.onKeyDown(keyCode, event);
}

@Override
public void onBackPressed() {
    // back was pressed
}

Полный список KeyCode смотрите здесь:

https://developer.android.com/reference/android/view/KeyEvent.html

Как видите, проще реализовать onBackPressed(), если вы хотите обнаружить обратное нажатие.

person Giovanni    schedule 25.10.2017