• 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" />
  • 相关阅读:
    Search Insert Position
    lintcode: 最长连续序列
    lintcode:颜色分类
    lintcode: 堆化
    lintcode: 旋转图像
    lintcode: 寻找旋转排序数组中的最小值
    lintcode: 跳跃游戏 II
    lintcode:最小差
    华为:数独填充
    华为:字符集合
  • 原文地址:https://www.cnblogs.com/jenson138/p/4516568.html
Copyright © 2020-2023  润新知