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

在android中如何实现在应用首页按两次返回键(back)退出应用

2013-12-25 11:19 639 查看
在很多应用中,我们经常可以看到这样一个功能,在应用的首页,如果你连续两次按返回键,系统提示,然后退出应用。淘宝,zaker等都有这样的功能。那他们是如何实现的呢。

其实主要是对按键事件进行监听,然后调用相应的逻辑处理代码来执行相应的操作。

以下是一个代码实现,供参考。

Activity代码:

主要是在主activity中重写 onKeyDown方法:

private long exitTime = 0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
toast("再按一次返回键退出程序");

exitTime = System.currentTimeMillis();
}
else {
//关闭首页
finish();

//完全退出应用
killApp();
}

return true; //返回true表示执行结束不需要继续执行父类按键响应
}

return super.onKeyDown(keyCode, event);
}
其中toast()和killApp()方法是我自己封装的方法。
代码如下:

/*
* killApp() 关闭应用
*
* 参数:无
*
* 返回值:无
*/

public void killApp() {
Process.killProcess(Process.myPid());
}
/*
* toast()提示信息
*/
public void toast (String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}

这里还有一种常规的实现,就是在首页按返回键,系统弹出一个退出对话框,点击确定,退出应用。这里也一并给出实现的代码。在onKeyDown方法的if判断逻辑里面调用即可。
/*
* exitDialog() 退出系统对话框
*/
public void exitDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setMessage(R.string.ExitMessage)
.setCancelable(false)
.setPositiveButton(R.string.Yes,new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
killApp(); //退出应用
}
})
.setNegativeButton(R.string.Cancel,new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel(); //关闭对话框
}
});

AlertDialog alert = builder.create();

alert.show();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息