双击返回键两次后退出

来源:互联网 发布:windows下的linux终端 编辑:程序博客网 时间:2024/06/06 00:05

        在很多主流的APP中都会出现这个小功能点。今天自己做东西的时候我也想把这个小功能做进去,所以查阅了一下,发现这个小功能虽然实现简单,但自己还真不一定想得到!查阅的地址

步骤一:

定义一个变量,标示此时针对返回键是否可以退出

boolean isExitableForBack;


 

步骤二:

重写boolean onKeyDown(int keyCode, KeyEvent event)方法,实现我自己需要的逻辑。

@Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {            exit();            return false;        } else {            return super.onKeyDown(keyCode, event);        }    }


 

步骤三:

实现步骤二中的exit()函数

public void exit(){        if (!isExitableForBack) {            isExitableForBack = true;            Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();            mHandler.sendEmptyMessageDelayed(0, 2000);        } else {        this.finish();        }    }


 

步骤四:

编写一个Handler类,响应步骤三种的消息。这种写法会有警告,这个警告就涉及到java的泄露问题了。

Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            isExitableForBack = false;        }    };


实现的原理就是:isExitableForBack标示针对此次点击BACK是否可以退出,当第一次点击BACK的时候,事件被onKeyDown捕获,并且执行exit()函数修改isExit标明针对点击BACK会退出。此时还会在2秒后发送一个消息,如果在2秒内再次点击BACK因为isExit标明针对此次点击可以退出,则退出,若果在2秒后点击则消息被处理isExit又被修改为针对此次点击BACK不会退出。

0 0
原创粉丝点击