您的位置:首页 > 移动开发 > Android开发

Android开发之两种方式实现连续点击两次返回键退出程序

2015-07-30 22:24 751 查看
经常看到很多程序点击一下返回键会显示再按一次退出程,然后连续点击两次返回键就退出程序了。虽然心里对这种功能实现方式有了一种大概想法,但是一直也没有去总结过。现在觉得如果项目中加上这个小功能还是很方便的,所以总结了一下实现方式,下面和大家分享两种方式。

第一种:

首先定义一个boolean型变量用于标示是否退出

boolean isExit;


然后重写Activity中的onKeyDown方法,代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (!isExit) {
isExit = true;
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
mHandler.sendEmptyMessageDelayed(0, 2000);
} else {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
System.exit(0);
}
return false;
} else {
return super.onKeyDown(keyCode, event);
}
}



再根据onKeyDown用到的消息写一个写一个Handler,代码如下:

Handler mHandler = new Handler() {

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
isExit = false;
}

};


最后再来理一遍基本原理,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了BACK键,此时isExit的值已为true,则会执行退出的方法。

第二种:
其实第二种就是把第一种进行了简化,可以用第一种来理解这种方法,用第二种在自己的项目中实现。

直接重写Activity中的onKeyDown方法就可以了,代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN)
{

if((System.currentTimeMillis()-exitTime) > 2000)  //System.currentTimeMillis()无论何时调用,肯定大于2000
{
Toast.makeText(getApplicationContext(), "再按一次退出程序",Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
}
else
{
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}


原理和上面的一样,我就不再重述了,相信大家完全可以看懂。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: