Android之当前Activity页关闭其他Activity界面

效果:从A界面跳转到B界面,再从B跳转到C界面。当点击C界面中的某一个按钮,直接关闭B界面,返回到A界面。

ActivityA --> ActivityB --> ActivityC

B界面:全局变量中定义

// 定义全局变量
public static ActivityB instance = null; 

// onCreate方法中赋值
instance = this;

C界面:结束B界面

// 写在finish()第二个界面
ActivityB.instance.finish();

二、关闭所有本程序界面

自己定义一个继承activity的基类,然后其他自己的activity继承自定义基类,在基类中实现关闭程序的功能。

Activity管理工具类:

/**
 * Activity活动管理工具
 */
public class ActivityCollector {

    public static List<Activity> activitys = new ArrayList<Activity>();

    //向List中添加一个活动
    public static void addActivity(Activity activity) {
        activitys.add(activity);
    }

    //从List中移除活动
    public static void removeActivity(Activity activity) {
        activitys.remove(activity);
    }

    //将List中存储的活动全部销毁掉
    public static void finishAll() {
        for (Activity activity : activitys) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }
}

创建BaseActivity继承Activity类:

public class BaseActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}

自定义Activity继承BaseActivity 基类,退出程序时,调用代码:

ActivityCollector.finishAll();

三、将Activity存放在map里,可退出APP或关闭其他界面

ActivityManager管理类:


public class ActivityManager {
    /**
     * 存放Activity的map
     */
    private static Map<String, Activity> activitys = new HashMap<String, Activity>();

    /**
     * 获取管理类中注册的所有Activity的map
     *
     * @return
     */
    public static Map<String, Activity> getActivitys() {
        return activitys;
    }

    /**
     * 根据键值取对应的Activity
     *
     * @param key 键值
     * @return 键值对应的Activity
     */
    public static Activity getActivity(String key) {
        return activitys.get(key);
    }

    /**
     * 注册Activity
     *
     * @param value
     * @param key
     */
    public static void addActivity(Activity value, String key) {
        activitys.put(key, value);
    }

    /**
     * 将key对应的Activity移除掉
     *
     * @param key
     */
    public static void removeActivity(String key) {
        activitys.remove(key);
    }

    /**
     * finish掉所有的Activity移除所有的Activity
     */
    public static void removeAllActivity() {
        Iterator<Activity> iterActivity = activitys.values().iterator();
        while (iterActivity.hasNext()) {
            iterActivity.next().finish();
        }
        activitys.clear();
    }
}

具体使用方式:

// 创建activity时
ActivityManager.addActivity(this,"MainActivity"); 

// 关掉指定的Activity时
Activity activity = ActivityManager.getActivity("MainActivity"); 
activity.finish();

// 关掉所有的Activity,退出App时使用 
ActivityManager.removeAllActivity()

 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值