使用自定义的Activity栈来管理android的Activity
2013-04-10 16:40
344 查看
由于Android未提供相应的多个activity管理的功能,只能在一个Activity的对象里面调用finish来关闭自己,不能关闭其他的Activity。
比如我们想实现一个功能从屏幕A—>屏幕B—>屏幕C—>屏幕D,然后在在转到屏幕D之前将屏幕B和C关闭,在屏幕B和屏幕C界面点击会退按钮都可以回退到上一个屏幕,但是在屏幕D上点击会退按钮让其回退到A。
此外在一些循环跳转的界面上如果不在合适的地方将一些不需要的屏幕关闭,那么经过多次跳转后回导致内存溢出。对此我们可以设计一个全局的Activity栈,使用这个栈来管理Activity。管理Activity的类的定义如下:
比如我们想实现一个功能从屏幕A—>屏幕B—>屏幕C—>屏幕D,然后在在转到屏幕D之前将屏幕B和C关闭,在屏幕B和屏幕C界面点击会退按钮都可以回退到上一个屏幕,但是在屏幕D上点击会退按钮让其回退到A。
此外在一些循环跳转的界面上如果不在合适的地方将一些不需要的屏幕关闭,那么经过多次跳转后回导致内存溢出。对此我们可以设计一个全局的Activity栈,使用这个栈来管理Activity。管理Activity的类的定义如下:
import java.util.Stack; import android.app.Activity; public class ScreenManager { private static Stack<Activity> activityStack; private static ScreenManager instance; private ScreenManager() { } public static ScreenManager getScreenManager() { if (instance == null) { instance = new ScreenManager(); } return instance; } public void popActivity() { Activity activity = activityStack.lastElement(); if (activity != null) { activity.finish(); activity = null; } } public void popActivity(Activity activity) { if (activity != null) { activity.finish(); activityStack.remove(activity); activity = null; } } public Activity currentActivity() { Activity activity = activityStack.lastElement(); return activity; } public void pushActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.add(activity); } public void popAllActivityExceptOne(Class cls) { while (true) { Activity activity = currentActivity(); if (activity == null) { break; } if (activity.getClass().equals(cls)) { break; } popActivity(activity); } } }
相关文章推荐
- 使用自定义的Activity栈来管理android的Activity
- 使用自定义的Activity栈来管理android的Activity
- 使用自定义的Activity栈来管理android的Activity
- 使用自定义的Activity栈来管理android的Activity
- 自定义Activity栈来管理android的Activity
- 记录自学Android的笔记-自定义一个ActivityCollector类来管理所有活动和自定义BaseActivity作为所有活动的父类
- Android种使用Notification实现通知管理以及自定义通知栏实例(示例四)
- 使用和管理Android中Activity的切换动画(二)
- 自定义Activity栈 管理Activity--ArrayList
- Android中使用Stack对Activity的管理
- Android:使用自定义透明Dialog样式的Activity
- Android关于Activity的一些使用和全局管理技巧
- Android Activity管理之Activity栈
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android 使用activity自定义下拉选择列表
- Android使用Theme自定义Activity进入退出动画的方法
- android 中使用回调方法(适用于自定义view传值到activity、adapter传值到activity)
- 使用gradle的自定义Property实现Android项目的配置和依赖统一管理
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果