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
- Android自定义一个ActivityManager管理类笔记
- Android中ActivityManager学习笔记
- Android中ActivityManager学习笔记(1)-MemoryInfo
- Android中ActivityManager学习笔记(2)-RunningServiceInfo
- Android中ActivityManager学习笔记(3)
- Android系统中的服务管理类(ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)。PackageManager(管理应用程序包))
- android activitymanager
- 记录自学Android的笔记-自定义一个ActivityCollector类来管理所有活动和自定义BaseActivity作为所有活动的父类
- 自定义BaseActivity和ActivityManager
- android.app包---------ActivityManager类介绍
- 通过ActivityManager 管理activity
- Android开发学习笔记(十一)ListView/ActivityManager/ArrayAdapter学习
- ActivityManager.getRunningTasks笔记
- ActivityManager查看笔记
- ActivityManager原理认识笔记
- android之ActivityManager
- android 之 ActivityManager
- Delphi Android ActivityManager
- 为什么要配置环境变量?
- Ubuntu 16.04/14.04安装SS与Chrome
- 人机大战第三局,柯洁中盘认输意义何在?
- 【VBA】动态数组
- 450. Delete Node in a BST
- Android自定义一个ActivityManager管理类笔记
- 【VBA】遍历文件夹及子文件夹
- 写内容到Windows的文件怎么换行?
- bzoj3620 似乎在梦中见过的样子 kmp
- 柯洁仍然是中国围棋冠军,向科学认输、底头不是耻辱!
- 搜索二叉树和平衡二叉树
- 博客Markdown语法
- Android基础篇(一)屏幕,文本,图形,控件
- 公司财务比率指标