在BlackBerry中,提供了一个管理Screen的栈,用来从任何地方来关闭位于最上一层的Screen,使用UiApplication.getUiApplication().getActiveScreen()来得到位于最上一层的Screen的实例,并且使用UiApplication.getUiApplication().popScreen()来关闭一个Screen或关闭当前最上一层的Screen,但是Android却未提供相应的功能,只能在一个Activity的对象里面调用finish来关闭自己,不能关闭其他的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);
}
}
}
分享到:
相关推荐
- 在实际代码中,`StackTest`可能包含对自定义栈的初始化、添加Activity到栈、检查栈的状态以及模拟用户回退等操作的测试方法。 5. **自定义栈的实际应用** - 多Tab切换:每个Tab对应一个栈,用户在每个Tab下的...
理解和熟练掌握Activity的生命周期、Intent的使用、Activity间的通信、栈管理、多窗口支持、Activity过渡动画以及配置变化处理,是Android开发者的基本功。通过深入学习和实践,可以创建出更加高效、用户友好的应用...
广播Receiver(BroadcastReceiver)是Android中实现跨组件通信的一种方式,它可以监听并响应系统或应用发送的自定义广播。在我们的场景中,我们可以创建一个BroadcastReceiver来监听特定的广播事件,并在接收到广播...
5. **Activity栈与回退栈(Back Stack)**:Android系统采用“后进先出”(LIFO)的回退栈管理Activity。每次启动新的Activity,都会压入栈顶,用户按下后退键时,栈顶的Activity被弹出,回到前一个Activity。 6. *...
默认情况下,Android系统在用户导航时采用栈(后进先出,LIFO)的方式管理Activity,即新的Activity压入栈顶,当用户按下Back键时,栈顶的Activity会被弹出,呈现出栈中的前一个Activity。然而,开发者可以根据需求...
1. **back stack**: Android系统维护了一个后退栈来管理Activity,按下返回键会弹出栈顶的Activity。 2. **finish()**: 调用`finish()`方法可以结束当前Activity,将其从栈中移除。 7. **FLAG_ACTIVITY_XXX**: ...
- Activity作为Android应用程序中的主容器,负责管理一个或多个Fragment。它可以添加、删除、替换或隐藏Fragment,以实现不同界面间的切换和交互。 - Fragment有自己的视图层次结构,并且可以在Activity中独立存在...
在Android开发中,Activity是应用的基本组件之一,它是用户界面的主要载体。Activity的属性设置对于应用的行为和用户体验至关重要。以下是对Android activity属性的详细解释: 1. android:allowTaskReparenting=[...
Android的Activity是以栈的形式管理的,称为返回栈(back stack)。按下返回键时,会弹出栈顶的Activity。开发者可以通过 FLAG_ACTIVITY_CLEAR_TOP 或 FLAG_ACTIVITY_NEW_TASK 等标志控制Activity的栈行为。 综上所...
Android采用任务(Task)和回退栈(Back Stack)来管理Activity。每个任务是一个包含多个Activity的堆栈,当用户按下回退键或新启动一个Activity时,系统会在栈中进行相应的操作。理解这一机制对于避免用户在应用中...
4. **Activity栈的管理**:Android系统默认使用主任务栈来管理所有启动的Activity。通过FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TOP等FLAG,可以控制Activity如何进入和退出栈,比如清除栈中所有Activity,...
在Android中,每次启动一个新的Activity都会将其压入栈顶,而通过 `finish()` 关闭Activity会将其从栈中移除。因此,我们需要确保在正确的时间点关闭Activity,以避免栈的状态混乱。通常,我们会在新Activity启动后...
接着,`ActivityGroup`是Android早期版本(API Level 8及以下)中提供的一种在同一个栈内管理多个Activity的方式。在这个选项卡实现中,ActivityGroup可能被用来在同一个父Activity内启动和管理多个子Activity,以...
"Android一次启动多个Activity (TaskStackBuilder)"这个话题涉及到Android的Task和Back Stack管理,以及如何利用TaskStackBuilder实现从通知启动多级Activity并保持正确的返回流程。下面将详细阐述这一知识点。 ...
5. **模拟Activity进出栈**:这个源码可能展示了如何创建和管理自定义的Activity栈,例如,通过使用FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TOP等Intent标志来控制Activity的添加和移除,或者自定义回退按钮的...
在源码层面,Android系统的Activity栈管理和配置变更处理涉及到多个系统服务,如WindowManagerService和ActivityManagerService。理解这些服务如何协同工作可以帮助开发者更深入地了解切屏处理的底层机制。 至于...
1. **Activity栈**:Android使用栈式结构管理Activity。当新的Activity启动时,它会被压入栈顶;当Activity关闭时,则从栈中弹出。栈顶的Activity是当前可见且活跃的。 2. **Activity状态**: - **Active**:当...
同时,理解Activity栈的概念也很关键,因为多个Activity的管理是基于栈的后进先出(LIFO)原则。 总之,掌握Android Activity的生命周期是每个Android开发者必备的基础技能。通过理解和熟练运用生命周期方法,我们...
总之,"Android高级应用源码-模拟Activity进出栈.zip"提供的源码实例可以帮助开发者深入了解Activity如何在Android系统中管理,如何通过编程控制Activity的生命周期,以及如何优化用户体验。通过实践这些源码,...
在这个示例中,我们将深入理解Activity的生命周期、任务(Task)和返回栈(BackStack),以及如何通过工具类来实现更有效的Activity管理。 首先,Activity的生命周期包括了创建(onCreate())、启动(onStart())、...