在Android中,如果没对返回键进行监听的话,就会出现只点击一次返回键就直接退出了程序,这样很不人性化, 只要对返回键进行监听,就可以避免这种情况。对返回键的监听结果有两种操作较为常用,一种是按返回键的时候弹出一个dialog,询问使用者是否退出程序;另一种则是双击返回键的时候退出按钮。由于弹出dialog会给使用者带来较为麻烦的操作,所以这种做法在安卓中已经慢慢被淘汰了。
第一种做法,就是对返回键监听,弹出一个对话框,代码如下:

public boolean onKeyDown(int keyCode, KeyEvent event)  
    {  
        if (keyCode == KeyEvent.KEYCODE_BACK )  
        {  
            // 创建退出对话框  
            AlertDialog isExit = new AlertDialog.Builder(this).create();  
            // 设置对话框标题  
            isExit.setTitle("温馨提示");  
            // 设置对话框消息  
            isExit.setMessage("确定要退出吗?");  
            // 添加选择按钮并注册监听  
            isExit.setButton("确定", listener);  
            isExit.setButton2("取消", listener);  
            // 显示对话框  
            isExit.show();  
        }       
        return false;       
    }  
    /**监听对话框里面的button点击事件*/  
    DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener()  
    {  
        public void onClick(DialogInterface dialog, int which)  
        {  
            switch (which)  
            {  
            case AlertDialog.BUTTON_POSITIVE:// "确认"按钮退出程序  
                finish();  
                break;  
            case AlertDialog.BUTTON_NEGATIVE:// "取消"第二个按钮取消对话框  
                break;  
            default:  
                break;  
            }  
        }  
    };

这样就能实现对返回键进行监听,按返回键的时候弹出一个dialog,dialog里面有个确定跟取消按钮,按相应的按钮,执行退出程序或消除对话框的操作,只要在主的activity中加入这段代码就能实现这个功能 。
第二种做法,对返回键的监听,实现双击返回键退出程序,代码如下:

public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode == KeyEvent.KEYCODE_BACK)
        {  
            moveTaskToBack(false);
            exitBy2Click();     //调用双击退出函数
        }
        return false;
    }
    /**
     * 双击退出函数
     */
    private static Boolean isExit = false;
    private void exitBy2Click() {
        Timer tExit = null;
        if (isExit == false) {
            isExit = true; // 准备退出
            Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
            tExit = new Timer();
            tExit.schedule(new TimerTask() {
                @Override
                public void run() {
                    isExit = false; // 取消退出
                }
            }, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
        } else {
            finish();
            System.exit(0);
        }
    }

对返回键进行监听,按下返回键的时候就执行exitBy2Click()这个函数,函数里面用一个定时器来监听两次按下返回键,第一次按下返回键的时候弹出一个Toast,提示“再按一次退出程序”, 然后启动定时器,如果2秒内没再次按下返回键的时候,就取消准备退出这个任务,如果在2秒内再次按下返回键,则执行System.exit(0)即退出程序。