点击两次系统返回键实现退出应用

实现应用中不可缺少的事件,两次点击返回键实现退出应用,这里写了两种方法,都很简单,先开始方法1:

先定义一个两次点击返回键的间隔时间

//第一次点击与第二次点击的间隔时间
private long exitTime;

 然后实现点击返回键的事件

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
            exit();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    private void exit(){
        if((System.currentTimeMillis() - exitTime) > 2000){
            Toast.makeText(this, "再次点击退出应用", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        }else{
            finish();
            System.exit(0);
        }
    }

接下来实现方法2,通过Handler延时发送更改状态消息达到退出应用:

 1 //定义一个判断是否要退出的变量
 2     private boolean isExit = false;
 3 
 4     Handler handler = new Handler(){
 5         @Override
 6         public void handleMessage(@NonNull Message msg) {
 7             super.handleMessage(msg);
 8             isExit = false;
 9         }
10     };

然后实现点击系统返回键的事件(注意方法exit中的判断是"!isExit"):

 1 @Override
 2     public boolean onKeyDown(int keyCode, KeyEvent event) {
 3         if(keyCode == KeyEvent.KEYCODE_BACK){
 4             exit();
 5             return false;
 6         }
 7         return super.onKeyDown(keyCode, event);
 8     }
 9 
10     private void exit(){
11         if(!isExit){
12             isExit = true;
13             Toast.makeText(this, "再次点击退出应用", Toast.LENGTH_SHORT).show();
14             //通过Handler的延迟发送更改状态消息
15             handler.sendEmptyMessageDelayed(0,2000);
16         }else{
17             finish();
18             System.exit(0);
19         }
20     }

猜你喜欢

转载自www.cnblogs.com/Mr-Deng/p/11655038.html