Android实现双击退出应用

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()里面的条件 不 成立,则直接走最后一步退出

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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容