Android完全退出APP,并且清除活动栈

来源:互联网 发布:长虹乐视网络电视报价 编辑:程序博客网 时间:2024/06/07 02:28

一般一个应用程序要执行退出的命令是单击回退双击退出

比如就像这样,在要退出的页面加入退出的代码。

    private static Boolean isExit = false;    /*单击回退*/    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {            exitBy2Click();            return false;        }        return super.onKeyDown(keyCode, event);    }    /*双击退出*/    private void exitBy2Click() {        Timer tExit = null;        if (isExit == false) {            isExit = true; // 准备退出            showLongToast(this, "再按一次退出程序");            tExit = new Timer();            tExit.schedule(new TimerTask() {                @Override                public void run() {                    isExit = false; // 取消退出                }            }, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务        } else {            finishAll();            try {                ActivityManager activityMgr = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);                activityMgr.killBackgroundProcesses(this.getPackageName());            }catch (SecurityException e) {                Log.i("Exception-Security", e.getMessage());            }            System.exit(0);        }    }

但是会有一个问题,比如我要在MainActivity中退出,但是之前还有个登录页。
单击的时候不就返回到登录页了吗?

这样显然是不合理的,

最简单的办法是在登录页面加入
当activity启动的时候,移除上一个活动栈,这样在执行回退命令的时候,由于找不到返回的栈,所以就默认当前的活动是第一个。

<!--登陆-->        <activity android:name=".activity.LoginActivity"            android:noHistory="true">        </activity>

在app中所有的活动栈都是以数组的形式存在,而finish执行的方法就是返回到上一个栈的索引。
所以在监听回退键的时候要注意这一点。

原创粉丝点击