您的位置:首页 > 移动开发 > Android开发

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

2016-11-09 15:53 537 查看
       经常用到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();

            }

        }

    }
有兴趣的还可以添加一个结束动画之类的,我就不写了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android