嘿,我的代码看起来像这样:
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);}
我的问题是,app既不会终止也不会执行println。谁能告诉我这里做错了什么?当用户按下主页键时,应该关闭应用程序。我这样做是因为用户在打开其他应用时遇到的性能问题。我可以让应用程序更具性能效率,但在这种类型的应用程序中,确实没有必要让它继续运行。
答案 0 :(得分:2)
通过设计,无法拦截Home键,因此KEYCODE_HOME
将不会在任何回调中发送。您只能推断何时按下Home键。
答案 1 :(得分:2)
你可以尝试在你的主要使用onClose。这将允许您在关闭应用程序时保存文件或执行任何操作。 有点像...
@Override
protected void onStop() {
super.onStop();
//Do whatever
}
答案 2 :(得分:0)
我在SO中找到了它:
最后,您活动中的代码应为:
@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;
}
答案 3 :(得分:0)
此密钥由框架处理,永远不会传递给应用程序。
但您可以使用achieve
Reflection
。见this post