点击两次返回退出程序需要我们在Activity中重写onKeyDown方法,这个方法(个人理解)是实现点击按键之后进行的操作,在Activity中的代码如下:
//记录短时间内点击次数
private int count_back = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//KeyEvent.KEYCODE_BACK是找back键
//event.getRepeatCount指重复次数,防止点击后退键过快触发两次
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
if(count_back == 0){
Toast.makeText(this, "再次点击退出应用", Toast.LENGTH_SHORT).show();
count_back ++;
//如果在两秒内没有点击第二次,那么就清零 还是使用多线程实现一个延时操作
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
count_back = 0;
}
}, 2000);
}else{
count_back = 0;
finish();
return true;
}
}
return false;
}
这里说的是第二种方法,不使用多线程,效率应该会提高(我也感觉不到惹=。=)
//这是第二种方法,网上都说这种效率高点,我看了下,不需要使用多线程,应该是可以更高效。
//记录退出时间
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
//System.currentTimeMillis()肯定大于2000
if((System.currentTimeMillis() - exitTime) > 2000){
Toast.makeText(this, "再次点击退出应用" , Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
}else{
finish();
return true;
}
}
return false;
}