具体效果:
基本原理:重写android的返回键点击事件监听方法,第一次按下时弹出Toast提醒用户再按一次退出,然后判断第
二次按下的时间与第一次相差时间是否小于2秒,小于则推出程序否则继续弹出提示。
实现方法:可以通过onKeyDown+finish 或者 system.exit(),还可以通过重写onBackPressed方法来实现。
1.首先查看onBackPressed()方法
@Override public void onBackPressed() { super.onBackPressed(); }
查看super.onBackPressed()源码
public void onBackPressed() { if (mActionBar != null && mActionBar.collapseActionView()) { return; } if (!mFragments.getFragmentManager().popBackStackImmediate()) { finishAfterTransition(); } }
查看finishAfterTransition()源码
public void finishAfterTransition() { if (!mActivityTransitionState.startExitBackTransition(this)) { finish(); } }
finishAfterTransition()方法中调用了finish()方法,可以看出super.onBackPressed() 可以实现关闭当前activity();
如果重写onBackPressed()方法时,删掉super.onBackPressed();则app无法通过返回键退出程序。
@Override public void onBackPressed() { // super.onBackPressed(); 如果去掉后无法通过返回键退出程序 }
2.实现点击两次退出程序
// 第一次按下返回键的事件 private long firstPressedTime; // System.currentTimeMillis() 当前系统的时间 @Override public void onBackPressed() { if (System.currentTimeMillis() - firstPressedTime < 2000) { super.onBackPressed(); } else { Toast.makeText(MainActivity.this, "再按一次退出", Toast.LENGTH_SHORT).show(); firstPressedTime = System.currentTimeMillis(); } }