Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
Android总Activity的启动模式分为四种:
Activity启动模式设置:
<activity android:name=".MainActivity" android:launchMode="standard" />
Activity的四种启动模式:
1. standard
默认启动模式,每次激活Activity时都会创建Activity,并放入任务栈中,永远不会调用onNewIntent()。
2. singleTop
如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,并调用其onNewIntent(),否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例,而不会调用onNewIntent(),此时就跟standard模式一样)。
3. singleTask
如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中(此时不会调用onNewIntent())。
4. singleInstance
在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
大家遇到一个应用的Activity供多种方式调用启动的情况,多个调用希望只有一个Activity的实例存在,这就需要Activity的onNewIntent(Intent intent)方法了。只要在Activity中加入自己的onNewIntent(intent)的实现加上Manifest中对Activity设置lanuchMode=“singleTask”就可以。
onNewIntent()非常好用,Activity第一启动的时候执行onCreate()---->onStart()---->onResume()等后续生命周期函数,也就时说第一次启动Activity并不会执行到onNewIntent(). 而后面如果再有想启动Activity的时候,那就是执行onNewIntent()---->onResart()------>onStart()----->onResume(). 如果android系统由于内存不足把已存在Activity释放掉了,那么再次调用的时候会重新启动Activity即执行onCreate()---->onStart()---->onResume()等。
当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的Intent。
Android任务和返回栈完全解析,细数那些你所不知道的细节
http://blog.csdn.net/guolin_blog/article/details/41087993
分享到:
相关推荐
### Activity的四种启动模式及其与onNewIntent的关系 在Android开发中,Activity是构成应用程序的基本单元之一,每个界面都对应一个Activity。为了更好地控制Activity的生命周期以及如何在多个Activity之间进行切换...
了解和掌握Activity的四种启动模式对于优化用户体验和应用性能至关重要。 1. **standard模式** 这是最常见的启动模式,也是默认模式。在standard模式下,每当用户通过意图(Intent)启动Activity时,系统都会创建...
本文将深入探讨Activity的四种启动模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop),并结合博客《Activity四种启动模式》中的内容进行详细解释。...
本示例代码详细展示了Activity的四种启动模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。 1. 标准模式(Standard): 这是Activity的默认启动...
android 中activity的启动模式分为四种,(standard、singleTop、singTask、singleInstance),本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
为了管理Activity的生命周期和用户界面的流程,Android系统提供了一系列的机制和属性,其中包括四种不同的Activity启动模式以及taskAffinity属性。这些启动模式和属性共同作用于Activity所属的任务栈(Task)和后退...
Android提供了四种不同的启动模式:标准模式(Standard)、单实例模式(SingleTop)、单任务模式(SingleTask)和单栈顶模式(SingleActivity)。下面我们将详细探讨这四种模式的特性和应用场景。 1. **标准模式...
在Android应用开发中,Activity是用户界面的主要载体,它的启动模式是决定Activity如何启动和运行的关键因素。...通过这种方式,开发者能够更好地掌握Activity启动模式的使用,提高应用的健壮性和用户体验。
一、Activity启动模式概述 1. **标准模式(Standard)**:这是Activity的默认启动模式,每次启动都会创建一个新的实例,无论是否已在栈中存在。因此,同一个Activity可能会有多个实例。 2. **单实例模式...
Android为Activity提供了4种启动模式,以控制新Activity的实例如何创建和与任务栈的关系: 1. **标准模式(standard)**:默认模式,每次启动Activity都会创建一个新的实例。即使目标Activity已经在栈中,也会创建...
### Activity的四种启动模式 #### 一、Standard模式 **定义**:这是系统默认的启动模式,每当激活一个新的Activity时,系统都会创建一个新的Activity实例,并将其压入任务栈的顶部。 **特点**: - **创建新实例**...
总之,Android的四种Activity加载模式提供了一种灵活的方法来管理Activity实例和任务,帮助开发者实现更高效、更流畅的应用体验。在设计应用程序的导航流程时,充分理解和利用这些模式是非常重要的。
综上所述,掌握Activity启动模式是Android开发中的重要技能,可以根据实际需求选择合适的模式,提升应用性能和用户体验。"Activity启动模式demo"这个实例提供了一个很好的学习平台,通过实践操作加深理解。
在Android应用开发中,Activity是用户界面的基本组件,它负责与用户进行交互。Activity的启动模式是Android系统管理...因此,理解Activity启动模式和Intent标志的结合使用,对打造高效、流畅的应用体验具有重要意义。
Activity有四种启动模式:标准模式(standard)、单顶模式(singleTop)、单任务模式(singleTask)和单实例模式(singleInstance)。这些模式影响着Activity在任务(Task)中的行为、实例数量以及与其他Activity的...
在Android应用开发中,Activity是用户界面的基本单元,它负责展示和管理用户的交互。了解Activity的启动模式至关重要,因为这...通过分析这些文件,开发者可以学习如何在实际项目中应用和测试不同的Activity启动模式。
本示例项目"Activity启动模式实例"深入探讨了四种主要的Activity启动模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。以下是对这四种启动模式的...
本篇文章将深入探讨Android中的四种主要Activity启动模式:标准模式(Standard)、单实例模式(SingleTop)、单任务模式(SingleTask)和单栈顶模式(SingleActivity)。 1. **标准模式(Standard)**:这是...
`onNewIntent()` 主要与Activity的启动模式(launchMode)紧密相关,所以我们首先需要了解Android中的几种启动模式。 1. **标准模式(Standard)**:这是默认的启动模式,每次启动Activity都会创建一个新的实例。...