android 關閉多個或指定activity


打開了。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" />

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM