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

在很多应用中,我们经常可以看到这样一个功能,在应用的首页,如果你连续两次按返回键,系统提示,然后退出应用。淘宝,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();
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值