//定义一个变量作为退出的信号
boolean isExit = false;
//重写按下返回键的函数
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
Exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
//写一个控制器
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
isExit=false;
}
};
//此函数用于延迟向控制器发送信息
public void Exit(){
/**
* 因为 if(isExit) 相当于 if(isExit!=false)
* 所以 if(!Exit) 相当于 if(!isExit!=false)
*
* 也就是说 本来 isExit=false 取反后 isExit =true
*/
if(!isExit){
//第一次点击进入这里 如果在两秒内再次按返回键就会进入else里
isExit=true;
Toast.makeText(getApplicationContext(),"再按一次退出程序",Toast.LENGTH_LONG).show();
//延迟发送信息给控制器
handler.sendEmptyMessageDelayed(0,2000);
}else{
finish();
System.exit(0);
}
放在 MainActivity的oncreat函数之外即可运行