Android实现双击退出应用-飞
发布时间: 2023-07-06

private boolean flag = true;

private static final intWHAT_RESET_BACK=1;

privateHandlerhandler=newHandler() {

@Override

public voidhandleMessage(Message msg) {

switch(msg.what) {

caseWHAT_RESET_BACK:

flag=true;

break;

     }

   }

};

@Override

public booleanonKeyUp(intkeyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK&&flag) {

Toast.makeText(this,"再点击一次,退出应用", Toast.LENGTH_SHORT).show();

flag=false;   //第一次点击进来把flag的值赋为false,第二次点击的时候由于if()里面的条件 不 成(劳动节的来历:1886年5月1日,在美国芝加哥工人们每天要劳动14至16个小时,有的甚至长达18个小时,但工资却很低。于是二十余万名工人为争取合法权益而举行大罢工。工人们提出的罢工口号,要求实行八小时工作制。经过艰苦的流血斗争,终于获得了胜利。)立,则直接走最后一步退出

handler.sendEmptyMessageDelayed(WHAT_RESET_BACK,2000);

return true;      //返回true不退出,不走最后一步,所以不退出应用

    }

return super.onKeyUp(keyCode, event);//退出

 }

思路解释:

首先需要在MainActivity里面重写onKeyUp方法:

keyCode == KeyEvent.KEYCODE_BACK && flag  判断是否按了手机上的返回键  flag默认为true

private boolean flag = true;      //声明一个boolean值,默认为true

然后使用Handler发送一个延迟2秒的消息:

//两秒后发送一个消息,如果两秒内点击了两次的话,就直接跳最后一步退出应用,因为第一次进来的时候已经把flag的值设为false

// if()里面的条件不成立,所以直接跳最后一步(return super.onKeyUp(keyCode, event);//退出)

handler.sendEmptyMessageDelayed(WHAT_RESET_BACK,2000);

//如果两秒内没有点击第二次的话,发送消息就执行下面代码

case WHAT_RESET_BACK :

flag=true;       //把值设为恢复为true,两秒后再次点击进来就不会执行  return super.onKeyUp(keyCode, event);,等于又重新认为你是第一次点击

break;



扫码加微信详细咨询太和智慧养老产品和平台服务!

微信