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



我一直在开发一个Android应用程序,该应用程序主要包含本地html页面,只有一个Mainactivity。我正在使用此代码退出应用程序,当按下两次时将退出该应用程序。 例如,我在 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);

}

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

你可以像这样实现它:

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
}

在此代码中,在第一次反向按时,将保存当前时间,在第二次后按时,将其与上次后按时间进行比较。如果间隔小于 500 毫秒,则调用super.onBackPressed()

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

相关内容

最新更新