如何在按下主页按钮时执行代码?

时间:2014-01-15 15:28:57

标签: android android-homebutton

我想仅在按下主页按钮(当应用程序发送到后台时)时才运行代码。我尝试使用生命周期方法,但问题是它们也会在启动其他对话框/活动时执行。我只想检查应用程序是否发送到后台。我怎样才能做到这一点?

7 个答案:

答案 0 :(得分:2)

onOptionsItemSelected(MenuItem item);中,检查点击的项目是否为主页按钮:

编辑:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

答案 1 :(得分:2)

Activity.onUserLeaveHint()会因为用户操作(例如按主页按钮或切换应用程序)而将活动置于后台时触发您的活动。

答案 2 :(得分:0)

好吧,因为你正在编写代码,你可以在明确开始另一个活动时设置一些布尔标志,并检查你的活动何时通过onPause()......

如果它们是假的,则意味着其他人正在暂停您的活动。

也许不是最优雅的解决方案,但如果这是您遇到的唯一问题,它将会起作用。

答案 3 :(得分:0)

您可以拥有一个跟踪系统(基本上是一个计数器)来了解您的某个活动何时恢复和暂停,从而让您知道您的任何活动是否已打开。

这样您就可以知道您的应用是否“开放”。但这不仅适用于主页按钮,而是适用于后退按钮(最后一个关闭应用程序),甚至不会从通知栏中打开另一个应用程序。

答案 4 :(得分:0)

Android操作系统会杀死你的应用程序以释放资源,它不会一直留在后台。如果您希望自己的应用继续在后台运行,请使用service

答案 5 :(得分:0)

如果您想在按下主页按钮并且活动进入后台时执行此操作,则可以在活动上覆盖此项:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
    switch(keyCode)
    {
    case KeyEvent.KEYCODE_HOME:

    //somthing you want to do

    default:
        return super.onKeyUp(keyCode, event);

    }   
}

我正在使用KeyUp事件,因为当应用程序进入后台时,用户可以执行longPress,并且我认为您不想在应用程序仍处于打开状态时执行此方法。

答案 6 :(得分:0)

这是一种作弊的答案,但我觉得它更可靠。

按下主页按钮时始终调用的一种方法是任何程序活动中包含的任何surfacedestroyedsurfaceviews方法。

将要执行的代码放在那里,让方法指向您想要执行的另一个方法,或者让方法触发指向您要执行的方法的标志将完成这项工作。