在Android上按下主页按钮时有没有办法退出应用程序?

时间:2012-01-16 09:37:06

标签: android

我想在用户按下主页按钮时终止应用程序。有没有办法在Android上做到这一点?

6 个答案:

答案 0 :(得分:2)

按Home键时,您的应用会隐藏并调用onStop方法,因此您可以使用finish方法调用onStop

但如果另一个应用程序位于您的应用程序前面,您的应用程序也会隐藏,因此无法正确识别Home或其他应用程序,因此建议使用如下:

    static final String SYSTEM_DIALOG_REASON_KEY = "reason";

    static final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";

    static final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";

    static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {   
            String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); 
            if (reason != null) {
                Lg.i("receive action:" + action + ",reason:" + reason);
                if (mListener != null) {
                    if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
                        mListener.onHomePressed();
                    } else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
                        mListener.onHomeLongPressed();
                    }
                }
            }
        }
    }

}

这是补码HomeWatcher

答案 1 :(得分:1)

我通过覆盖Activity.onUserLeaveHint()实现了类似的功能。一旦按下主页键就会调用此方法,但我认为现在我记不起一些警告了。也就是说它在我不希望我的应用程序完成的情况下被调用,并且必须放置标志以防止不必要的退出。

答案 2 :(得分:0)

在您的活动上调用了finish()。

价:

Activity's finish() method

答案 3 :(得分:0)

你可以试试这个:

@Override
public void onUserLeaveHint() {
    finish();
}

您可以在此处找到更多详细信息:

http://tech.chitgoks.com/2011/09/05/how-to-override-back-home-button-in-an-android-app/

答案 4 :(得分:0)

如果您不编写自己的家庭应用程序 - 请勿对家庭或后退按钮提供任何特殊操作。阅读this question and answer以获得有关您不需要此内容的详细解释

答案 5 :(得分:-2)

JoxTraex的回答是正确的,但可能指定您可以捕获主页按钮,以便能够对您想要的活动执行完成:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    //Handle the back button
        if (keyCode == KeyEvent.KEYCODE_HOME) { 
           finish();
        }
    }

评论是对的,我刚试过 KeyEvent.KEYCODE_BACK 抱歉! 然后我会尝试覆盖每个活动的onStart()和onStop()函数,以了解我的应用程序上何时没有打开任何活动。