首先说下android2.2之前的完全退出方法 。
加以下权限
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
然后在退出的方法块儿上写
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
这个方法在android2.2之前的所有版本上都绝对好用,可惜的是自从android2.2出来后此方法就失效了。
android 2.2
根据Activity的声明周期
我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。
在A窗口中使用下面的代码调用B窗口
Intent intent = new Intent();
intent.setClass(Android.this, CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置
startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法即可全部退出。