Android自定义一个ActivityManager管理类笔记

来源:互联网 发布:下载人聊天软件 编辑:程序博客网 时间:2024/05/22 00:18

       为什么要自定义一个ActivityManager类,首先Android中每当创建一个Activity的时候系统都有一个管理类(APPManager)去自动帮我们管理(什么时候销毁,什么时候从栈中移除)。但实际开发中会遇到一个这样的场景,比如:你在看某条新闻的时候,想发表评论,然后经过一系列的注册界面,注册成功后再次跳转到这条新闻的页面。那么如果自定义了一个ActivityManager管理类以后,就可以在里面随意删除Activity从栈中把它移除掉,当你点击注册成功后,可以把一系列注册的界面都移除掉,露出你正在看的那条新闻页面。

         ActivityManager类:

 

/** * Created by yaoming on 2017/5/28. * 统一应用程序中所有的Activity的栈管理(单例) * 涉及到activity的添加、删除指定、删除当前、删除所有、返回栈大小的方法 */public class ActivityManager {    //单例模式:饿汉    public ActivityManager() {    }    private static ActivityManager activityManager = new ActivityManager();    public static ActivityManager getActivityManager() {        return activityManager;    }    //提供栈对象    private static Stack<Activity> activityStack = new Stack<>();    //把Activity添加到栈里面    public void addActivityManager(Activity activity) {        if (activity != null) {            activityStack.add(activity);        }    }    //删除当前的activity    public void removeCurrent() {        //方式一://        Activity activity = activityStack.get(activityStack.size() - 1);//        activity.finish();//        activityStack.remove(activityStack.size() - 1);        //方式二:        Activity activity = activityStack.lastElement();        activity.finish();        activityStack.remove(activity);    }    //移除指定的Activity    public void remove(Activity activity) {        if (activity != null) {            for (int i = activityStack.size() - 1; i >= 0; i--) {                Activity currentActivity = activityStack.get(i);                if (currentActivity.getClass().equals(activity.getClass())) {                    currentActivity.finish();//销毁当前的activity                    activityStack.remove(i);//从栈空间移除                }            }        }    }    //移除所有的Activity    public void removeAll(Activity activity) {        for (int i = activityStack.size() - 1; i >= 0; i--) {            activity.finish();            activityStack.remove(i);        }    }    //返回栈大小    public int size() {        return activityStack.size();    }}  //其他Activity的OnCreate()中调用
protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);        //当前的Activity加到ActivityManager类中    ActivityManager.getActivityManager().addActivityManager(this);


//移除
   Intent intent = new Intent(WelcomeActivity.this, MainActivity.class);   startActivity(intent);//   finish();   ActivityManager.getActivityManager().remove(WelcomeActivity.this);

以上只是一个自定义ActivityManager的笔记,至于上面提到场景中的功能还没实现。

阅读全文
0 0
原创粉丝点击