当前位置: 代码迷 >> Android >> android 封锁多个或指定activity
  详细解决方案

android 封锁多个或指定activity

热度:19   发布时间:2016-04-28 00:53:10.0
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并finish19      */20     public static void finishActivity() {21         for (Activity activity : activityList) {22             activity.finish();23         }24     }25 26     /**27      * 结束指定的Activity28      */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         <activity2             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" />

 

  相关解决方案