onKeyDown() 和 onBackPressed() 的区别

Difference between onKeyDown() and onBackPressed()

我对 onKeyDown()onBackPressed() 的用法感到困惑。 这两种覆盖方法在功能和用法上是否相同? 如果不是这样,那么两者的正确用法是什么?

您可能指的是这个问题 here,它询问实施地点,但我问的是为什么和何时,而不是在哪里。

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() 更容易实现。