阻止后退按钮关闭我的应用程序

时间:2011-06-29 00:52:13

标签: android graphics

我在我的应用程序活动中使用以下代码,以防止它关闭我的应用程序。

/* Prevent app from being killed on back */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        // Back?
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // Back
            moveTaskToBack(true);
        }

        // Return
        return super.onKeyDown(keyCode, event);

    }

它不起作用。该应用程序设置为Android 1.6(API Level 4)兼容。单击我的应用程序图标会在Splash活动(主要是)上重新启动我的应用程序。如何阻止我的应用程序关闭?

4 个答案:

答案 0 :(得分:11)

更简洁的解决方案: -

@Override
public void onBackPressed() {
    // do nothing. We want to force user to stay in this activity and not drop out.
}

答案 1 :(得分:9)

您是否尝试将super调用放入else块中,以便仅在密钥不是KEYCODE_BACK时调用?

/* Prevent app from being killed on back */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        // Back?
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // Back
            moveTaskToBack(true);
            return true;
        }
        else {
            // Return
            return super.onKeyDown(keyCode, event);
        }
    }

老实说,你不能依赖这个,因为一旦你的应用程序被放置在后台,它可以随时回收,以便系统回收内存。

答案 2 :(得分:2)

即使你能做到这一点,你也不应该这样做。强制用户将应用程序一直保留在内存中并不是一个好主意,只会让他们烦恼。

答案 3 :(得分:0)

如果需要导航回来以及阻止关闭,那么在Android WebView中使用:

@Override
public void onBackPressed() {
    if (mWebView.canGoBack()) {
        mWebView.goBack();
        return;
    }

    // Otherwise defer to system default behavior.
    super.onBackPressed();
}