Android Keycode#U home不';我不叫安卓

Android Keycode#U home不';我不叫安卓,android,Android,嘿,我有一个代码,看起来像这样: public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_HOME: System.out.println("sdfadsfadsf"); fi

嘿,我有一个代码,看起来像这样:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_HOME:
            System.out.println("sdfadsfadsf");
            finish();
            return true; }
  } return super.onKeyDown(keyCode, event);}

我的问题是,应用程序既不会终止,也不会执行println。有人能告诉我我做错了什么吗?当用户按下home键时,应用程序应关闭。我这样做是因为我的用户在打开其他应用程序时遇到性能问题。我可以提高应用程序的性能,但在这种类型的应用程序中,确实没有必要让它保持运行。

根据设计,Home键不能被截获,因此,
KEYCODE\u Home
不会在任何回调中发送。您只能推断何时按下Home键。

根据设计,Home键无法被截获,因此在任何回调中都不会发送
KEYCODE\u Home
。您只能推断何时按下Home键。

您可能可以尝试在主菜单中使用onClose。这将允许您在关闭应用程序时保存文件或执行任何操作。 类似于

@Override
protected void onStop() {
    super.onStop();

//Do whatever
}

您可能可以尝试在主应用程序中使用onClose。这将允许您在关闭应用程序时保存文件或执行任何操作。 类似于

@Override
protected void onStop() {
    super.onStop();

//Do whatever
}
我在这里找到的,所以:

  • 问题:
  • 原职:
最后,活动中的代码应该是:

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    boolean defaultAction = super.onKeyDown(keyCode, event);

    if (keyCode == KeyEvent.KEYCODE_HOME) {
        Log.i(TAG, "it's into the IF statement!");
    }

    return defaultAction;
}
我在这里找到的,所以:

  • 问题:
  • 原职:
最后,活动中的代码应该是:

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    boolean defaultAction = super.onKeyDown(keyCode, event);

    if (keyCode == KeyEvent.KEYCODE_HOME) {
        Log.i(TAG, "it's into the IF statement!");
    }

    return defaultAction;
}

此密钥由框架处理,永远不会交付给应用程序。


但是您可以使用
反射
实现它。请参见

此密钥由框架处理,并且从未交付给应用程序。


但是您可以使用
反射
实现它。请参见

谢谢您的回答。你说,我只能推断何时按下Home键。这不意味着会有办法解决我的问题吗?是的,也许吧。如果您的活动不使用键盘,因此没有EditText或用户按下硬键盘,则选择“是”。最重要的可能是,当使用键盘时,您可能能够过滤掉该键,并且可以通过逻辑推断何时按下主控键。谢谢您的回答。你说,我只能推断何时按下Home键。这不意味着会有办法解决我的问题吗?是的,也许吧。如果您的活动不使用键盘,因此没有EditText或用户按下硬键盘,则选择“是”。最重要的是,当使用键盘时,您可能能够过滤掉按键,并且可以通过逻辑推断何时按下主控键。非常感谢。不知何故,现在这两种方法都能工作,只是应用程序不一定会关闭,但这没关系,因为现在按下home按钮后,它使用的内存不足1 mb。你可能可以在onStop方法中添加代码来杀死应用程序,我已经看到了一些关于它的帖子。谢谢。不知何故,现在这两种方法都能工作,只是应用程序不一定会关闭,但这没关系,因为现在按下home按钮后,它使用的内存不足1 mb。你可能可以在onStop方法中添加代码来杀死应用程序,我已经看到了一些关于它的帖子。“当用户按下home键时,应用程序应该关闭”——不,不应该。“我可以提高应用程序的性能效率”--因为用户除了按HOME键外,还有很多方法可以离开你的应用程序,请“提高应用程序的性能效率”。“当用户按HOME键时,应用程序应该关闭”--不,不应该。“我可以提高应用程序的性能效率”——因为用户除了按HOME键外,还有很多方法可以离开你的应用程序,请“提高应用程序的性能效率”。