android 双击退出Activity类实现

直接上代码:

1.先创建一个DoubleClick抽象类

package com.demo.safetydrill.utils.system;

import android.content.Context;
import android.widget.Toast;

/**
 * @author Geek_Soledad (66704238@51uc.com)
 */
public abstract class DoubleClick {
	protected Context mContext;
	/**
	 * 开始任务的时间。
	 */
	private long mStartTime;

	/**
	 * 构造方法,初始化Context对象及开始的任务时间。
	 * 
	 * @param context
	 */
	public DoubleClick(Context context) {
		mContext = context;
		mStartTime = -1;
	}

	/**
	 * 当某个动作要双击才执行时,调用此方法。
	 * 
	 * @param delayTime
	 *            判断双击的时间。
	 * @param msg
	 *            当第一次点击时,弹出的提示信息。如果为null,则不作提示。
	 */
	public void doDoubleClick(int delayTime, String msg) {
		if (!doInDelayTime(delayTime)) {
			showMsgInToast(delayTime, msg);
		}
	}

	/**
	 * 如果是在在指定的时间内则执行doOnDoubleClick,否则返回false。
	 * 
	 * @param delayTime
	 *            指定的延迟时间。
	 * @return 当且仅当执行了doOnDoubleClick时返回true,否则返回false。
	 */
	private boolean doInDelayTime(int delayTime) {
		long nowTime = System.currentTimeMillis();
		if (nowTime - mStartTime <= delayTime) {
			doOnDoubleClick();
			return true;
		}
		mStartTime = nowTime;
		return false;
	}

	/**
	 * 当某个动作要双击才执行时,调用此方法。
	 * 
	 * @param delayTime
	 *            判断双击的时间。
	 *            当第一次点击时,弹出的提示信息。如果为null,则不作提示。
	 */
	public void doDoubleClick(int delayTime, int msgResid) {
		long nowTime = System.currentTimeMillis();
		if (nowTime - mStartTime <= delayTime) {
			doOnDoubleClick();
		} else {
			mStartTime = nowTime;
			showMsgInToast(delayTime, msgResid);
		}
	}

	/**
	 * 在双击之后执行的事情。
	 */
	abstract protected void doOnDoubleClick();

	/**
	 * 显示提示信息。
	 * 
	 * @param msg
	 *            要显示的信息。
	 */
	private void showMsgInToast(int delayTime, String msg) {
		if (msg != null) {
			Toast.makeText(mContext, msg, delayTime).show();
		}
	}

	/**
	 * 显示提示信息。
	 *
	 *            要显示的信息。
	 */
	private void showMsgInToast(int delayTime, int msgResid) {
		Toast.makeText(mContext, msgResid, delayTime).show();
	}
}

2.实现抽象类ExitDoubleClick

package com.demo.safetydrill.utils.system;

import android.app.Activity;
import android.content.Context;


/**
 * 双击退出Activity的类。
 * 
 * @author Geek_Soledad (66704238@51uc.com)
 */
public class ExitDoubleClick extends DoubleClick {

	private static ExitDoubleClick exitDoubleClick;

	private ExitDoubleClick(Context context) {
		super(context);
	}

	/**
	 * 返回一个双击退出的实例。
	 * 
	 * @param context
	 * @return ExitDoubleClick
	 */
	public static synchronized ExitDoubleClick getInstance(Context context) {
		if (exitDoubleClick == null) {
			exitDoubleClick = new ExitDoubleClick(context);
		}
		return exitDoubleClick;
	}

	/**
	 * 双击之后退出。
	 */
	@Override
	protected void doOnDoubleClick() {
		//退出程序
//		OpenHelperManager.getHelper(BaseApp.mApp, DatabaseHelper.class).close();
		((Activity) mContext).finish();
		destroy();
	}

	/**
	 * 双击退出Activity,如果msg为null,而默认显示的提示语为"再按一次退出"。
	 */
	@Override
	public void doDoubleClick(int delayTime, String msg) {
		if (msg == null || msg.equals("")) {
			msg = "再按一次退出";
		}
		super.doDoubleClick(delayTime, msg);
	}

	private static void destroy() {
		exitDoubleClick = null;
	}
}

3.在app的首页调用该类:

 //点击两次才推出
    @Override
    public void onBackPressed() {
        ExitDoubleClick exitDoubleClick = ExitDoubleClick.getInstance(this);
        exitDoubleClick.doDoubleClick(2000, null);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值