Android实现点击两次返回键退出

来源:互联网 发布:部落冲突巨石投手数据 编辑:程序博客网 时间:2024/06/01 07:38

Android应用程序通常要通过判断用户对于返回键的操作,一般是为了防止误触误操作而导致用户体验不佳。因此,需要在用户按下返回键的时候提示用户是否退出应用程序。

常见的提示方法有两种,一种是通过Toast的方式弹出提示,一种是通过对话框Dialog的方式弹出提示。

一、Toast方式弹出提示

1、当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。在exit方法中,首先判断isExit的值,如果为false,则重置为true,同时弹出提示,并在2秒后发出一个消息,在Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次点击BACK键,则再次执行exit方法,此时isExit的值已经为true,则会直接执行退出的方法。

public class MainActivity extends Activity{    //定义一个变量,来标识是否退出    private static boolean isExit=false;    Handler handler=new Handler(){        @Override        public void handleMessage(Message msg){            super.handleMessage(msg);            isExit=false;        }    };    @Override    public boolean onKeyDown(int keyCode,KeyEvent event){        if(keyCode==KeyEvent.KEYCODE_BACK){            exit();            return false;        }        return super.onKeyDown(keyCode,event);    }    private void exit(){        if(!isExit){            isExit=true;            Toast.makeText(getApplicationContext(),"再按一            退出程序",Toast.LENGTH_SHORT).show();            //利用handler延迟发送更改状态信息            handler.sendEmptyMessageDelayed(0,2000);        }        else{            finish();            System.exit(0);        }    }

2、当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。在exit方法中,通过记录按键时间计算时间差实现。
public class MainActivity extends Activity{    private long exitTime=0;    @Override    public boolean onKeyDown(int keyCode,KeyEvent event){        if(keyCode==KeyEvent.KEYCODE_BACK){            exit();            return false;        }        return super.onKeyDown(keyCode,event);    }    private void exit(){        if((System.currentTimeMills()-exitTime)>2000){            Toast.makeText(getApplicationContext(),            "再按一次退出程序",Toast.LENGTH_SHORT).show();            exitTime=System.currentTimeMills();        else{            finish();            System.exit(0);        }    }