防止返回按钮关闭我的应用程序

7
我在应用程序的活动中使用以下代码,以防止其在返回时关闭我的应用程序。
/* 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个回答

11

更简洁的解决方案:

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

10

你尝试把 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);
        }
    }

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


这个完美地运作了。我知道有人对使用它持保留意见,但我发现它非常适合。 - Keith Adler

2
即使您可以这样做,也不应该这样做。强制用户始终在内存中保留您的应用程序并不是一个好主意,只会让他们感到恼怒。

0
如果需要在Android WebView中返回并防止关闭,则使用以下代码:

如果需要在Android WebView中返回并防止关闭,则使用以下代码:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接