一、启动模式介绍
启动模式简单地说就是Activity启动时的策略,在 Android Manifest.xml中的标签的android:launchMode属性设置;
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance。
Activity的任务栈,任务栈是一种“先进后出”的栈结构,这个比较好理解,就是我们每按一次back键就会有一个Activity出栈,知
道这个任务栈空为止,当任务栈为空时候系统就回收这个任务栈。
二、四大启动模式的理解
1.standard:标准模式,这也是系统默认的启动模式。每启动一个Activity都会被重新创建一个新的实例,不管这个实例是否已经存在。谁启动这个Activity,那么这个Activity就运行在启动他那个Activity点任务栈中,但当我们用Application去启动一个standard模式的Activity的就会报错,因为非Activity类型的Content没有所谓的任务栈,这时候我们要为就要启动的Activity指定一个标志位FLAG_ACTIVITY_NEW_TASK,这样启动的时候就为这个Activity再创建一个任务栈,这其实就是SingleTask的启动方式。
2.singleTop:栈顶复用模式。在这种模式下,如果新的Activity已经位于任务栈的栈顶,这时候再启动该Activity,该Activity就不会被创建,即该Activity的Oncreate、onStart方法不会被调用,同时他的OnNewIntent方法会被调用,通过此方法的参数可以取出当前请求的信息。如果这个Activity不在栈顶,这个Activty的实例将会被创建。
3.singleTask:栈内复用模式。是一种单实例模式,在这种情况下只要一个Activity在一个栈内存在,那么多次启动Activity都不会重新创建实例,和SingleTop一样的,他也会执行OnNewIntent的方法,就是说当一个singleTask的Activity启动了以后,系统会寻找是否有该Activity想要的任务栈,如果有的话,看Activity是否在任务栈内实例化过,如果没有就重新创建一个Activity的任务栈。
4.singleInstance:单实例模式。就是说是一种加强的singleTask,他除了有所有的singleTask的任务外,还有就是此种启动模式的Activity只能单独的位于一个任务栈内。
任务栈由前台任务栈和后台任务栈,当后台任务栈中有Activity需要被启动时候,整个后台任务栈将会当前台的任务栈中。singleTask所需的任务栈,默认情况下Activity所需的任务栈都是该应用的包名,当然我们也可以给每个Activity单独通过TaskAffinity的属性指定任务栈,通过TaskAffinity指定的任务栈不能是该应用的包名。通过给Intent设置标志位和在注册文件内都可以指定Activity的启动模式,这两种的标志位的优先级高。
三、Activity的Falgs标志位
Activity有很多Flags,我们主要说常用的,
FLAG_ACTIVITY_NEW_TASK,这个标志位的作用是为Activity指定“singleTask”启动模式,和在XMl指定效果一样;
FLAG_ACTIVIYT_SINGLE_TOP,这个标志位的作用是为Activity指定“singleTop”启动模式;
FLAG_ACTIVITY_CLEAR_TOP,这个和FLAG_ACTIVITY_NEW_TASK连用,是指同一任务栈内位于该Activity上面的所有Activity都要出栈;
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,具有此标志的Activity将不会出现在用户通过历史列表此Activity。
分享到:
相关推荐
### Activity的四种启动模式及其与onNewIntent的关系 在Android开发中,Activity是构成应用程序的基本单元之一,每个界面都对应一个Activity。为了更好地控制Activity的生命周期以及如何在多个Activity之间进行切换...
综上所述,掌握Activity启动模式是Android开发中的重要技能,可以根据实际需求选择合适的模式,提升应用性能和用户体验。"Activity启动模式demo"这个实例提供了一个很好的学习平台,通过实践操作加深理解。
在Android应用开发中,Activity是用户界面的基本组件,它负责与用户进行交互。Activity的启动模式是Android系统管理...因此,理解Activity启动模式和Intent标志的结合使用,对打造高效、流畅的应用体验具有重要意义。
一、Activity启动模式概述 1. **标准模式(Standard)**:这是Activity的默认启动模式,每次启动都会创建一个新的实例,无论是否已在栈中存在。因此,同一个Activity可能会有多个实例。 2. **单实例模式...
标准模式是最常见的Activity启动模式,每个启动请求都会创建一个新的Activity实例。如果新的实例被压入到栈顶,那么就会出现多个相同实例的情况。这种模式适用于大多数Activity,因为它们通常不需要特殊的行为管理...
本示例项目"Activity启动模式实例"深入探讨了四种主要的Activity启动模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。以下是对这四种启动模式的...
1. **Activity启动模式**: - **Standard**(标准模式):默认模式,每次启动新的实例,无论当前栈中是否存在该Activity。 - **SingleTop**(单顶模式):如果目标Activity已经在栈顶,则直接使用该实例,不创建新...
Android系统提供了四种基本的Activity启动模式:standard、singleTop、singleTask和singleInstance。每种模式都定义了Activity实例的生命周期和如何处理用户的操作。 二、singleTask启动模式 singleTask启动模式是...
本篇文章将深入探讨Android中的四种主要Activity启动模式:标准模式(Standard)、单实例模式(SingleTop)、单任务模式(SingleTask)和单栈顶模式(SingleActivity)。 1. **标准模式(Standard)**:这是...
在Android应用开发中,Activity是用户界面的基本组件,它的启动模式是决定Activity如何启动和管理的关键因素。了解和掌握Activity的四种启动模式对于优化用户体验和应用性能至关重要。 1. **standard模式** 这是最...
理解Activity的生命周期和启动模式对于开发高效、稳定的应用至关重要。让我们深入探讨Activity的7大生命周期以及4种启动模式。 **Activity生命周期** Activity的生命周期包括了从创建到销毁的各个阶段,主要有以下...
总结来说,理解并灵活运用Activity启动模式和窗口导航是提升Android应用体验的关键。TestViewPager和TestFragmentPager项目可能提供了实践这些概念的实际代码示例,通过学习和研究这些代码,开发者可以更好地掌握...
android 中activity的启动模式分为四种,(standard、singleTop、singTask、singleInstance),本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
每个Activity都配置不同的启动模式,通过按钮或Intent切换启动不同Activity,观察它们在任务管理器中的行为,以及onCreate()、onStart()、onResume()和onNewIntent()等生命周期方法的调用情况。通过这种方式,你可以...
在Android应用开发中,Activity的启动模式是决定其如何被创建和管理的关键因素。Activity有四种启动模式:标准模式(standard)、单顶模式(singleTop)、单任务模式(singleTask)和单实例模式(singleInstance)。...
`LaunchModeDemoWHole`项目中,开发者可能包含了不同启动模式的Activity,以及用于触发这些Activity启动的代码。例如,可能会有一个主Activity用来演示不同模式的启动,每个模式下都有一个或多个子Activity。在运行...
总结来说,`onNewIntent()` 是Android中处理Intent和Activity交互的重要方法,特别是在涉及到启动模式和Widget交互时。理解不同启动模式的工作原理以及如何在`onNewIntent()` 中正确处理Intent,是开发高效、用户...
在Android应用开发中,Activity是用户界面的主要载体,它的启动模式是决定Activity如何启动和运行的关键因素。...通过这种方式,开发者能够更好地掌握Activity启动模式的使用,提高应用的健壮性和用户体验。
Activity启动模式设置: <activity android:name=".MainActivity"android:launchMode="standard" /> Activity的四种启动模式: 1.standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 ...