版权声明:未经本人允许,转载需要注明出处 https://blog.csdn.net/nazicsdn/article/details/84302822
Android 中用户要退出应用程序,看到大部分退出应用程序的做法是:弹出一个对话框,用户点了确定后退出。个人觉得这用户体验有点不好,手指还要往屏幕中间移动再点 击。用户按了一次后退键,这可能用户是误按了后退键,并不想直接退出程序,给用户提示”再按一次后退键退出应用程序“,如果用户真想退出,直接再按一次后退键即可退出整个应用程序。
网上有好多实现方法,看到大部分人博客转的方法如下:
private static Boolean isExit = false;
Timer tExit = new Timer();
MyTimerTask task;
class MyTimerTask extends TimerTask{
public void run() {
isExit = false;
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(isExit == false ) {
isExit = true;
Toast.makeText(this, "再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();
if(task!=null)
task.cancel(); // 将原任务从队列中移除
task = new MyTimerTask(); // 新建一个任务
tExit.schedule(task, 2000);
} else {
finish();
System.exit(0);
}
}
return false;
}
经过测试,功能正常,还有一种简便方法也和大家分享一下:
private long exitTime = 0;
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次后退键退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
//退出代码
}
return true;
}
return super.onKeyDown(keyCode, event);
}