打開了。activityA,B,C,D,...然后到E一起關閉前面所有activity
(轉自:http://blog.csdn.net/lengguoxing/article/details/42145641)
(詳細:http://blog.csdn.net/u010205141/article/details/44153377)
1 public class CacheActivity { 2 public static List<Activity> activityList = new LinkedList<Activity>(); 3 4 public CacheActivity() { 5 6 } 7 8 /** 9 * 添加到Activity容器中 10 */ 11 public static void addActivity(Activity activity) { 12 if (!activityList.contains(activity)) { 13 activityList.add(activity); 14 } 15 } 16 17 /** 18 * 便利所有Activigty並finish 19 */ 20 public static void finishActivity() { 21 for (Activity activity : activityList) { 22 activity.finish(); 23 } 24 } 25 26 /** 27 * 結束指定的Activity 28 */ 29 public static void finishSingleActivity(Activity activity) { 30 if (activity != null) { 31 if (activityList.contains(activity)) { 32 activityList.remove(activity); 33 } 34 activity.finish(); 35 activity = null; 36 } 37 } 38 39 /** 40 * 結束指定類名的Activity 在遍歷一個列表的時候不能執行刪除操作,所有我們先記住要刪除的對象,遍歷之后才去刪除。 41 */ 42 public static void finishSingleActivityByClass(Class<?> cls) { 43 Activity tempActivity = null; 44 for (Activity activity : activityList) { 45 if (activity.getClass().equals(cls)) { 46 tempActivity = activity; 47 } 48 } 49 50 finishSingleActivity(tempActivity); 51 } 52 53 }
我們在每個Activity中,都在onCreate方法中加入如下代碼:比如在Activity1.java中的onCreate
1 if (!CacheActivity.activityList.contains(Activity1.this)) { 2 CacheActivity.addActivity(Activity1.this); 3 }
意味着將他們加入到我們控制池里面去了,然后從付款跳轉到登陸,登陸跳到注冊,注冊跳到充值,都不要finish當前的Activity,這樣點擊返回就會按照流程返回了。最后我們在充值成功的時候,調用
這樣就會關閉后面三個Activity,第一個Activity也就是Activity1就出出來。
我們也可以不把付款的頁面加入進去,只把后面三個加入進去,然后調用
CacheActivity.finishActivity();
全部清空,第一個頁面也就出來了。;
附,其它:---------------------------------------
1 1 //跳轉到主界面(android2.2) 2 2 Intent startMain = new Intent(Intent.ACTION_MAIN); 3 3 startMain.addCategory(Intent.CATEGORY_HOME); 4 4 startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 5 5 activity.startActivity(startMain); 6 6 System.exit(0);//推出程序
單個單個關閉:
常規方法是使用startActivityForResult打開新的Activity,重寫onActivityResult()方法,通過你打開的新的Activity發送過來的resultCode值,你就可以關閉Activity,這樣就很簡單了。
注意:activity為android:launchMode="singleTask"這個方法不生效
1 <activity 2 android:name="com.gdtel.eshore.goldeyes.activity.MyInfoActivity" 3 android:label="@string/app_name" 4 android:launchMode="singleTask" 5 android:screenOrientation="portrait" 6 android:windowSoftInputMode="stateHidden" />
