Android 再按一次返回键退出的第三种方式

来源:互联网 发布:国外云计算公司 编辑:程序博客网 时间:2024/04/30 04:06
这里给出的,只是另一种实现思路。网上也看到其他方式,原理都是延时判断。 

  网上已经有了其他方式,个人感觉,onKeyDown里面,尽量减少操作,便有了下面的实现思路。

  使用Handler进行实现,在onKeyDown里面只需要发送一条消息,其他操作全交给handleMessage去处理就ok。

首先,定义Handler及事件和等待时长:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
privatestatic final int MSG_EXIT = 1;
privatestatic final int MSG_EXIT_WAIT = 2;
privatestatic final long EXIT_DELAY_TIME = 2000;
privateHandler mHandle = newHandler() {
    publicvoid handleMessage(Message msg) {
        switch(msg.what) {
            caseMSG_EXIT:
                if(mHandle.hasMessages(MSG_EXIT_WAIT)) {
                    finish();
                else{    
                    Toast.makeText(MainActivity.this"再按一次返回键退出", Toast.LENGTH_SHORT).show();
                    mHandle.sendEmptyMessageDelayed(MSG_EXIT_WAIT, EXIT_DELAY_TIME);
                }
                break;
            caseMSG_EXIT_WAIT:
                break;
        }
    }
};

 其次,重载onKeyDown:

?
1
2
3
4
5
6
7
8
@Override
publicboolean onKeyDown(intkeyCode, KeyEvent event) {
    if(KeyEvent.KEYCODE_BACK == keyCode) {
        mHandle.sendEmptyMessage(MSG_EXIT);
        returntrue;
    }
    returnsuper.onKeyDown(keyCode, event);
}
0 0
原创粉丝点击