根據Activity的聲明周期
方法1
我們知道Android的視窗類別提供了曆史棧,我們可以通過stack的原理來巧妙的實現,這裡我們在A視窗開啟B視窗時在Intent中直接加入標誌 Intent.FLAG_ACTIVITY_CLEAR_TOP,這樣開啟B時將會清除該進程空間的所有Activity。
在A視窗中使用下面的代碼調用B視窗
Java代碼
Intent intent = new Intent();
intent.setClass(Android123.this, CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG設定
startActivity(intent)
方法2:
在調用退出方法中寫上
MyApplication.getInstance().exit();
public class MyApplication extends Application {
private List<Activity> activityList = new LinkedList<Activity>();
private static MyApplication instance;
private MyApplication() {
}
// 單例模式中擷取唯一的MyApplication執行個體
public static MyApplication getInstance() {
if (null == instance) {
instance = new MyApplication();
}
return instance;
}
// 添加Activity到容器中
public void addActivity(Activity activity) {
activityList.add(activity);
}
// 遍曆所有Activity並finish
/*
* 在每一個Activity中的onCreate方法裡添加該Activity到MyApplication對象執行個體容器中
*
* MyApplication.getInstance().addActivity(this);
*
* 在需要結束所有Activity的時候調用exit方法
*
* MyApplication.getInstance().exit();
*/
public void exit() {
for (Activity activity : activityList) {
activity.finish();
}
System.exit(0);
}