zoukankan      html  css  js  c++  java
  • 点击两次系统返回键实现退出应用

    实现应用中不可缺少的事件,两次点击返回键实现退出应用,这里写了两种方法,都很简单,先开始方法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     }
  • 相关阅读:
    Deno下一代Nodejs?Deno初体验
    2018年JavaScript现状报告
    国企程序员是一种怎样的体验
    前端面试送命题(二)-callback,promise,generator,async-await
    Nodejs mongoose 详解
    JS的进阶技巧
    Nodejs经验谈
    给腾讯云Linux主机创建Swap文件
    LVS跨网段DR模式并使用ldirectord实现RS高可用性
    LAMP配置NFS页面共享,autofs实现挂载,DNS实现名称解析,纯手动操作
  • 原文地址:https://www.cnblogs.com/Mr-Deng/p/11655038.html
Copyright © 2011-2022 走看看