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

来源:互联网 发布:选装修公司 知乎 编辑:程序博客网 时间:2024/05/17 22:12

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

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


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


Activity代码:

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

        private long exitTime = 0;                @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (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() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubkillApp(); //退出应用}})  .setNegativeButton(R.string.Cancel,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.cancel(); //关闭对话框}});AlertDialog alert = builder.create();alert.show();}


0 0
原创粉丝点击