截取后退按钮如果按一次则返回上一页,如果两次退出则退出

时间:2017-08-04 16:21:27

标签: java android

我一直在Android应用程序中工作,主要包含只有一个Mainactivity的本地html页面。我正在使用此代码退出应用程序,按两次将退出应用程序。 例如,我在assets文件夹中有两个html文件,一个页面链接到其他文件夹。如果我从A到B,那么如果按下后退按钮一次..它应该将我重定向到上一页,如果按两次将退出应用程序。现在代码我用来退出应用程序,如果按两次是...

boolean doubleBackToExitPressedOnce = false;

@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
    super.onBackPressed();
    return;
}

this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
        doubleBackToExitPressedOnce=false;                       
    }
}, 2000);

}

我想实现方法,如果按下一次将重定向到上一页,如果按两次将退出应用程序。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

boolean doubleBackToExitPressed = false;
long lastBackPressTime = 0;

@Override
public void onBackPressed() {
    // assuming the gap between two presses is 500ms
    long currentTime = System.currentTimeMillis();
    if (currentTime - lastBackPressTime < 500) {
        doubleBackToExitPressed = true;
        super.onBackPressed();
        return;
    } else {
        lastBackPressTime = System.currentTimeMillis();
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

    }

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            if (!doubleBackToExitPressed) {
                 // go to the previous webpage
            } else {
                doubleBackToExitPressed = false;
            }
        }
    }, 510); // trigger this after 510 milli seconds
}

在此代码中,在第一次背压时,保存当前时间,在第二次背压时,将其与lastBackPressTime进行比较。如果间隙小于500毫秒,则调用super.onBackPressed()

处理程序内的代码在510毫秒后触发,并检查doubleBackToExitPressed是否为false