zoukankan      html  css  js  c++  java
  • 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" />
  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/jenson138/p/4516568.html
Copyright © 2011-2022 走看看