一尘不染

Java覆盖后退按钮以充当主页按钮

java

如何在自己的应用程序中复制此功能?

我认为肯定有三种可能性…

  1. 捕获后退按钮的按下(如下所示),然后调用home按钮调用的任何方法。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        Log.d(this.getClass().getName(), "back button pressed");
    }
    return super.onKeyDown(keyCode, event);
}
  1. 捕获后退按钮按下,然后欺骗主页按钮。

  2. 捕获后退按钮的按下,然后启动主屏幕的活动,从而有效地将应用程序的活动置于停止状态。

编辑: 我知道有关服务,并且正在与此问题相关的应用程序中使用一种。该问题专门用于在按“后退”按钮时将活动置于停止状态而不是已破坏状态。


阅读 328

收藏
2020-03-01

共1个答案

一尘不染

大多数时候,你需要创建一个Service在后台执行某些操作,而你的可见对象Activity只需控制此操作Service。(我敢肯定,音乐播放器以相同的方式工作,所以在文档的例子似乎有点误导。)如果是这样的话,那么你Activity可以finish像往常一样和Service仍将运行。

一种更简单的方法是捕获Back按钮按下并按如下所示调用moveTaskToBack(true)

// 2.0 and above
@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

// Before 2.0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

我认为首选的选择应该是活动能够正常完成,并且能够重新创建自身,例如,如果需要,可以从服务中读取当前状态。但是moveTaskToBack有时也可以用作快速替代方法。

注意:如Dave所指出的,Android 2.0以下引入了一种新onBackPressed方法,以及有关如何处理“后退”按钮的这些建议。

2020-03-01