我的Android应用程序是一个客户端,当有人单击主页按钮时,我想向服务器发送一条消息,当用户更改回应用程序时,我也想向服务器发送消息。如果我可以覆盖HOME按钮keyEvent,或任何将应用程序放入后台时将被称为 的方法,我可以发送消息并在单个中设置一个静态变量,每个都会检查一次onStart(),所以基本上我只需要以某种方式“覆盖”HOME按钮。 我尝试了以下几点:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
//...
return true;
}
return super.onKeyDown(keyCode, event);
}
它根本不起作用。我在其中设置了断点,但HOME按钮根本不会触发此方法。 (三星Galaxy Ace,android 2.2.1)。
我还尝试像这样覆盖onUserLeaveHint()
:
@Override
protected void onUserLeaveHint() {
//...
super.onUserLeaveHint();
}
但问题是,当我按下HOME按钮或应用程序中断时,此方法将被称为不仅,而是当我导航到其他活动(并完成当前活动)时。 有没有解决这个问题的方法?
答案 0 :(得分:4)
答案 1 :(得分:1)
这个问题没有一天解决方案,因为android不允许你覆盖主页按钮。最简单的方法是在onPause
中删除代码,但当然可以在没有按下主页按钮的情况下调用它。
第二个(不接受)答案here有一个有趣的解决方案,但我没有尝试过,所以我不确定它是否有效
答案 2 :(得分:0)
我找到了这个问题的答案,或者至少有一种方法可以做到这一点: