ActivityManager的使用

本文介绍了一种使用ActivityManager管理Android应用活动中页面的方法。通过单例模式实现Activity的集中管理,可以方便地添加、移除Activity实例,甚至批量关闭除特定Activity外的所有页面。这种方法能够更好地控制应用流程,为用户提供良好的体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们再开发的时候,往往会碰到,当用户完成某个操作的时候,前期经历的页面都在后台关闭,而操作失败,则页面不关闭,那么我们就想到了ActivityManager的使用(上一篇文章写的使用任务栈的方式,因为任务栈的特点,完成不了更多的需求,所以放弃)

ActivityManager代码

import android.app.Activity;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;

/**
 * Activity管理类
 */
public class ActivityManager {


    public static ActivityManager mActivityManager;
    /**
     * 存放Activity的map
     */
    private List<Activity> mActivities = new ArrayList<Activity>();

    //将构造方法私有化,所以不能通构造方法来初始化ActivityManager
    private ActivityManager() {
    }

    ;

    //采用单例模式初始化ActivityManager,使只初始化一次
    public static ActivityManager getInstance() {
        if (mActivityManager == null) {
            mActivityManager = new ActivityManager();
        }
        return mActivityManager;
    }

    //添加activity
    public void addActivity(Activity activity) {
        if (!mActivities.contains(activity)) {
            mActivities.add(activity);
        }
    }

    //关闭指定的Activity
    public void removeActivity(Activity activity) {
        if (activity != null) {
            if (mActivities.contains(activity)) {
                mActivities.remove(activity);
            }
            activity.finish();
            activity = null;
        }
    }

    //将activity全部关闭掉
    public void clearAll() {
        for (Activity activity : mActivities) {
            activity.finish();
        }
    }

    //将activity全部关闭掉,除掉MainAcitiy
    public void clearOther() {

        for (Activity activity : mActivities) {
            Log.e("eerrree", activity.getClass().getSimpleName());

            if (activity.getClass().getSimpleName().equals("MainActivity")) {

                continue;
            }
            activity.finish();
        }
    }


}

第二步,在我们封装的Base的OnCreat方法中调用,

activitymanager = ActivityManager.getInstance();
activitymanager.addActivity(this);

这样所有集成Base的页面都会被存入集合中,待需要的时候关闭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值