学习封装双击返回键退出

来源:互联网 发布:sci-hub 知乎 编辑:程序博客网 时间:2024/05/31 19:41
今天在开源中国的源码中看见大神封装的双击返回键感觉不错所以自己也写了一遍收藏了 。
public DoubleClickHelper{    private Handler mHandler;// 用于提示双击返回键退出    private Activity mActivity;    private boolean mIsOnkeyBacking= false;// 用于标记是否是双击返回键退出    public DoublickClickHelper(Activity mActivity){        this.mActivity = mActivity;        mHandler = new Handler(Looper.getMainLooper());    }    /**     *点击事件的处理     */     public boolean onKeyDown(KeyEvent event) {        if (event.getKeyCode() != KeyEvent.KEYCODE_BACK) {            return false;        }        if(mIsOnkeyBacking){ // 第二次点击返回键            mIsOnkeyBacking = false;            if(mToast != null){                mToast.cancel();                mToast = null;            }            mHandler.removeCallbacks(onBackTimeRunnable); //            //在这里可以添加退出操作            AppManager.getInstance().appExit();        }else{ // 第一次点击返回键            mIsOnkeyBacking = true;            if (mToast == null) {                // 这里的文字你可以在你的项目中用R.string.**代替;                mToast = Toast.makeText(mActivity,"双击返回键退出",Toast.LENGTH_LONG);            }            mToast.show();            mHandler.postDelayed(onBackTimeRunnable,2000); // 在俩秒后执行        }        return true;    }    /**     * 用户在俩秒内没有再次点击返回键所以将执行取消操作     */    private Runnable onBackTimeRunnable = new Runnable() {        @Override        public void run() {            if (mToast != null) {                mToast.cancel();                mToast = null;            }            mIsOnkeyBacking = false;        }    };}

使用方法就是在应用主Activity的onKeyDown方法中调用DoubleClickHelper实例的onKeyDown方法。

0 0