Android--双击返回,退出应用

新建一个类DoubleClickExitHelper.java

public class DoubleClickExitHelper
{

	private final Activity mActivity;

	private boolean isOnKeyBacking;
	private Handler mHandler;
	private Toast mBackToast;

	public DoubleClickExitHelper(Activity activity)
	{
		mActivity = activity;//保存传进来的activity
		mHandler = new Handler(Looper.getMainLooper());//生成一个handler,去管理消息队列
	}

	/**
	 * Activity onKeyDown事件
	 * */
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		if (keyCode != KeyEvent.KEYCODE_BACK)
		{
			return false;
		}
		if (isOnKeyBacking)
		{
			mHandler.removeCallbacks(onBackTimeRunnable);//移除消息队列
			if (mBackToast != null)
			{
				mBackToast.cancel();
			}
			// 退出
			mActivity.finish();
			return true;
		}
		else
		{
			isOnKeyBacking = true;//注意,首先执行这里,因为isOnKeyBacking刚开始是false
			if (mBackToast == null)
			{
				mBackToast = Toast.makeText(mActivity, R.string.back_exit_tips, 2000);
			}
			mBackToast.show();
			mHandler.postDelayed(onBackTimeRunnable, 2000);//加入消息队列, 2000ms之后执行
			return true;
		}
	}

	// 2000ms之后执行, 把isOnKeyBacking设置成false
	private Runnable onBackTimeRunnable = new Runnable()
	{

		@Override
		public void run()
		{
			isOnKeyBacking = false;
			if (mBackToast != null)
			{
				mBackToast.cancel();
			}
		}
	};
}

然后在主界面里面调用

Main.java

@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 双击返回键退出
		mDoubleClickExitHelper = new DoubleClickExitHelper(this);
	}

	/**
	 * 监听返回--是否退出程序
	 */
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		boolean flag = true;
		if (keyCode == KeyEvent.KEYCODE_BACK)
		{
			// 是否退出应用
			return mDoubleClickExitHelper.onKeyDown(keyCode, event);
		}
		else if (keyCode == KeyEvent.KEYCODE_MENU)
		{
			// 其他
		}
		else if (keyCode == KeyEvent.KEYCODE_SEARCH)
		{
			// 其他
		}
		else
		{
			// 其他
		}
		return flag;
	}

OK, 这样就可以实现了

时间: 2024-10-05 04:33:24

Android--双击返回,退出应用的相关文章

Android双击返回键退出Activity的两种方法

在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记录按键时间计算时间差实现.现在跟大家分享一下,代码如下,希望对大家有帮助: 第一种:利用线程延时实现: private int mBackKeyPressedTimes = 0; @Override public void onBackPressed() { if (mBackKeyPressedT

Android双击Back退出应用

前言 在app主界面点击back时,通常有以下几种方式进行退出 单击即退出 弹出确认Dialog 再次点击退出程序 个人最喜欢方式3,相比于方式2,不需要再把手指移动到屏幕中央点击Dialog,相比于方式1,可以防止误操作. 实现 重写Activity的onBackPressed方法,当点击back时,记录下当前时间backPressedTime,并与上次点击的backPressedTime比较.若时间差小于1.5s,则退出,否则更新backPressedTime. long backPress

Android 双击返回键退出程序 实现

在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记录按键时间计算时间差实现.现在跟大家分享一下,代码如下,希望对大家有帮助: 第一种:利用线程延时实现: private int mBackKeyPressedTimes = 0; @Override public void onBackPressed() { if (mBackKeyPressedT

Android双击返回键退出Activity的方法

第一种:利用线程延时实现: private int mBackKeyPressedTimes = 0; @Override public void onBackPressed() { if (mBackKeyPressedTimes == 0) { Toast.makeText(this, "再按一次退出程序 ", Toast.LENGTH_SHORT).show(); mBackKeyPressedTimes = 1; new Thread() { @Override public

Android 双击返回键退出应用

今天做应用的双击退出效果,使用了网上建议的方法,但是每次都是点击一次就退出了,所以就没有用大家的方法,下面把自己的方法写出来,做一下记录.代码如下: /** 双击退出程序 */ private long mExitTime; @Override public void onBackPressed() { // TODO Auto-generated method stub // super.onBackPressed(); if ((System.currentTimeMillis() - mE

android双击返回键退出程序的实现

/** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK) { exitBy2Click(); //调用双击退出函数 } return false; } /** * 双击退出函数 */ private static Boolean isExit =

android双击返回键退出程序

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK) { ExitClick(); } return false; } private static Boolean isExit = false; private void ExitClick() { Timer tExit =

2秒内双击返回退出应用

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - mExitTime > 2000) { Toast.makeText(getApplicationContext(), "再按一次返回键退出", Toast.LENGTH_SHORT).show(); mE

android 双击返回按钮退出程序。

重写   onKeyDown()方法. @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(getApplicat

Android技术23:Android使用返回键退出实现

Android中通过双击返回键退出应用 在Android应用程序,经常可以通过双击返回键退出应用程序,例如QQ空间.下面将通过代码演示该过程. 1.设置退出标志符号 boolean isExist=false;默认为fasle 2.覆写onKeyDown()方法 监听Back键,当keyCode==KeyEvent.KEYCODE_BACK,则执行将isExist设置为ture,当第二次按back键时,应用程序退出,但两次时间间隔需要在一定时间内. 1 @Override 2 public bo