Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 主页按钮前的方法_Android_Home Button - Fatal编程技术网

Android 主页按钮前的方法

Android 主页按钮前的方法,android,home-button,Android,Home Button,我的android应用程序是一个客户端,当有人单击home按钮时,我想向服务器发送消息,当用户更改回应用程序时,我也想向服务器发送消息。如果我可以覆盖HOME button keyEvent,或者当应用程序被放到后台时只调用的任何方法,我可以发送消息并在一个单例中设置一个静态变量,每个onStart()都会对其进行检查,所以基本上我只需要以某种方式“覆盖”HOME按钮。 我尝试了以下方法: @Override public boolean onKeyDown(int keyCode, KeyEv

我的android应用程序是一个客户端,当有人单击home按钮时,我想向服务器发送消息,当用户更改回应用程序时,我也想向服务器发送消息。如果我可以覆盖HOME button 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,安卓2.2.1)

我还试图过多地使用
onUserLeaveHint()
,如下所示:

@Override
protected void onUserLeaveHint() {
    //...
    super.onUserLeaveHint();
}
但问题是,不仅当我按下主页按钮或应用程序被中断时,而且当我导航到其他活动(并完成当前活动)时,此方法将被调用。
这个问题有什么解决办法吗?

可能想看看这个

您正在根据该行查找onPause/onResume

或仅当应用程序将被调用时才会调用的任何方法 成为背景


该文档应该解释堆栈是如何工作的,这将允许您完成此问题。

可能想看看这个

您正在根据该行查找onPause/onResume

或仅当应用程序将被调用时才会调用的任何方法 成为背景


该文档应该解释堆栈是如何工作的,这将允许您完成此问题。

此问题没有解决方案,因为android不允许您覆盖home按钮。解决此问题的最简单方法是在
onPause
中pur您的代码,但当然,这可以在不按下home按钮的情况下调用


第二个(未被接受)答案有一个有趣的解决方案,但我没有尝试过,因此我不确定它是否有效,因为android不允许您覆盖home按钮,所以这个问题没有一个日间解决方案。解决此问题的最简单方法是在
onPause
中pur您的代码,但当然,这可以在不按下home按钮的情况下调用


第二个(未接受)答案有一个有趣的解决方案,但我没有尝试过,因此我不确定它是否有效

尝试覆盖MainActivity的onPause()。尝试覆盖MainActivity的onPause()。onPause的问题是,当我只是简单地更改活动(并完成当前任务)时,它将被调用,不仅当应用程序进入后台时。如何区分这两种情况?不幸的是,Android没有像iOS那样的ApplicationIdentinterBackground。在国际海事组织,你最好保持你的活动活动状态,以确定它是进入后台还是进入一个新的活动。有很多关于这个的话题,有很多不同的想法。我建议你四处看看,看看什么最适合你。谢谢你的回答,至少我不会试图找到一些不存在的东西。onPause的问题是,当我只是简单地更改活动(并完成当前活动)时,这将被调用,而不仅仅是当应用程序进入后台时。如何区分这两种情况?不幸的是,Android没有像iOS那样的ApplicationIdentinterBackground。在国际海事组织,你最好保持你的活动活动状态,以确定它是进入后台还是进入一个新的活动。有很多关于这个的话题,有很多不同的想法。我建议你四处看看,看看什么最适合你。谢谢你的回答,至少我不会试图找到一些不存在的东西。不幸的是,它不能正确地使用我的手机,这有点不可预测。不幸的是,它不能正确地使用我的手机,这有点不可预测。