android实现点击两次back键退出应用

       经常用到app中手指一不小心点了返回键就退出了应用,用户体验不太好,万一用户不是想退出应用呢?所以这个时候提议在用户第一次点击返回键的时候,提示用户您确定要退出应用吗?这里就简单的处理一下这个逻辑,也就是在用户第一次点击返回键的时候,记录当前时间的毫秒值,第二次点击返回键的时候在获取一下当前时间的毫秒值,然后设定一个固定的时间差作为评判标准,如果两次的时间差大于我们规定的时间差,就认为第一次点击无效,再次提示用户您确定要退出应用吗?如果两次点击的时间差小于我们固定的时间差,就退出应用。下面是代码:
private boolean isPressedBackOnce = false;
private long firstPressedTime = 0;
private long secondPressedTime = 0;
@Override
public void onBackPressed() {
        if (isPressedBackOnce) {
            // 说明已经按了一次 这是第二次
            secondPressedTime = System.currentTimeMillis();
            if (secondPressedTime - firstPressedTime > 2000) {
                // 第一次点击作废了,重新计算
                Toast.makeText(this, "再点一次退出", 0).show();
                isPressedBackOnce = true;
                firstPressedTime = System.currentTimeMillis();
            } else {
                // 说明两秒之内点击的第二次
                finish();
                // 状态回复至初
                isPressedBackOnce = false;
                firstPressedTime = 0;
                secondPressedTime = 0;
            }
        } else {
            // 说明第一次
            Toast.makeText(this, "再点一次退出", 0).show();
            isPressedBackOnce = true;
            firstPressedTime = System.currentTimeMillis();
        }
    }
上面只是简单的写了一个双击退出的逻辑,在这里也可以添加一个ActivityManger类,管理整个进程的Activity,在退出的时候,遍历关闭所有的界面。在上面调用finish的时候调用ActivityManger.killAll();就可以退出所有的activity。
public static class ActivityManger {
        private static Stack<Activity> activities = new Stack<>();
//事先写好一个基类,所有的activity都继承这个基类,在基类中调用该方法


        public static void add(Activity activity) {
            activities.add(activity);
        }
//在某个activity中调用此方法,可以删除自己


        public static void remove(Activity activity) {
            activities.remove(activity);
        }
//清空存放activity的集合


        public static void clear() {
            activities.clear();
        }
//在退出应用的时候遍历关闭所有的activity


        public static void killAll() {
            for (Activity activity : activities) {
                activity.finish();
            }
        }
    }
有兴趣的还可以添加一个结束动画之类的,我就不写了.

猜你喜欢

转载自blog.csdn.net/fishandbean/article/details/53100827