【Android】退出多个Activity方法(四)
来源:互联网 发布:儿童英语网络课程好吗 编辑:程序博客网 时间:2024/06/12 22:14
前三个退出多个Activity的方法链接:
- 方法一:setFlags()
- 方法二:setResult()
- 方法三:自定义一个类管理打开的Activity
这次介绍的方法跟方法三有点类似,也是自定义一个类作为活动管理器,只不过实现的功能更多。自定义类的代码如下:
public class ActivityCollector { public static Stack<Activity> activities; public static ActivityCollector instance; private ActivityCollector() { } /** * 单一实例 * @return 返回此对象 */ public static ActivityCollector getInstance() { if (instance == null) { instance = new ActivityCollector(); } return instance; } /** * 添加activity到栈中 * @param activity */ public static void addActivity(Activity activity) { if (activities == null) { activities = new Stack<Activity>(); } activities.add(activity); } /** * 删除指定的activity * @param activity */ public static void removeActivity(Activity activity) { if (activity != null) { activities.remove(activity); activity.finish(); activity = null; } } /** * 删除栈顶的activity */ public static void finishCurrentActivity() { removeActivity(activities.lastElement()); } /** * 结束所有activity */ public static void finishAllActivity() { for (Activity activity : activities) { if (!activity.isFinishing()) { activity.finish(); } } activities.clear(); } /** * 删除指定类名的activity * @param cls */ public static void finishActivity(Class<?> cls) { for (Activity activity : activities) { if (activity.getClass().equals(cls)) { removeActivity(activity); } } }}
和之前一样需要一个基类Activity,其余Activity继承于它。基类Activity中的代码实现如下:
public class BaseActivity extends AppCompatActivity { private static final String TAG = "BaseActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, getClass().getSimpleName()); ActivityCollector.addActivity(this);//注1 } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this);//注2 }}
- 注1:将创建的Activity添加到活动管理器中
- 注2:将关闭的Activity移除活动管理器
接着当你想完全退出或者关闭指定类名的Activity时,那么就调用自定义类中实现的方法即可,如关闭所有Activity:
ActivityCollector.finishAllActivity();
方法步骤总结
- 自定义活动管理器,在活动管理器中实现关闭指定类名Activity、栈顶Activity和关闭所有Activity等。
- 创建一个基类Activity,在基类Activity中实现添加Activity到活动管理器中和将关闭的Activity移除活动管理器。
- 想要对Activity进行什么样的操作时,调用活动管理器中的方法。
0 0
- 【Android】退出多个Activity方法(四)
- android退出多个activity方法整理
- 【Android】退出多个Activity方法(一)
- 【Android】退出多个Activity方法(二)
- 【Android】退出多个Activity方法(三)
- 【Android】退出多个Activity的方法(五)
- Android退出多个activity和单个activity的方法
- Android 退出多个Activity | 退出程序
- Android 退出多个Activity | 退出程序
- Android退出多个Activity
- Android应用开发多个activity完全退出程序方法
- android退出程序销毁多个Activity方法
- Android中退出多个Activity的方法
- Android中退出多个Activity的两个经典方法
- Android中退出多个Activity的两个经典方法
- Android中退出多个Activity的两个经典方法
- Android退出多个Activity的两个经典方法
- Android 中退出多个Activity的两个经典方法
- Thinkphp框架的_initialize()方法
- 关于SQL数据库的异地备份(二)
- 嵌套的标题边框
- yum安装(卸载)本地rpm包
- WPF触屏Touch事件在嵌套控件中的响应问题
- 【Android】退出多个Activity方法(四)
- js判断变量是否是数组(跨浏览器和ECMA)
- springboot+EHcache 实现文章浏览量的缓存和超时更新
- 微信硬件开发系列教程AA1
- C/C++疑问之为何一般采用循环队列而不是顺序队列
- cocos2D 程序代码分析 3
- jquery选中option的方法
- Tomcat 8080端口被占用(命令解决)
- git clone命令详解