Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题。直到后来随着不断的深入,才发现原来Activity的加载还分为四种不同加载模式。灵活的使用合适的加载模式,可以避免产生大量的重复的Activity,从而优化性能,减少系统资源消耗。
四种加载模式具体为:
standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
singleTop: 检查是否已经存在了一个实例位于Activity Stack的顶部,如果存在就不产生新的实例,反之则调用Activity的newInstance()方法产生一个新实例。
singleTask: 在一个新的Task中产生这个实例,以后每次调用都会使用此实例,而避免产生新的实例。
singleInstance: 这个基本上跟singleTask一样,只是有一点不同,那就是在这个模式下的Activity实例所处的Task中,只能有这一个Activity实例,而不能有其他的实例。
这些启动模式可以Android清单文件AndroidManifest.xml中,通过<activity>中的launchMode属性进行设置,如:
AndroidManifest.xml
<activity android:name="MainActivity" android:launchMode="singleTop">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Java Code
Intent intent = new Intent(SrcActivity.this, TargetActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
四种加载模式的区别如下:
1.所属Task的区别:
一般情况下,,“standard”和”singleTop”两种加载模式源Activity(即new Intent(arg0,arg1)中的第一个参数)和目标Activity(即new Intent(arg0,arg1)中的第二个参数)在同一个Task内,除非Intent包括了参数FLAG_ACTIVITY_NEW_TASK,如包含了此参数,目标Activity会起动到新的Task里;
“singleTask”和“singleInstance” 总是把目标Activity作为一个Task的根元素,他们不会被启动到一个其他Task里。
2.是否允许多个实例的区别:
standard”和”singleTop”可以允许有多个实例,并且可以位于不同的Task中;
singleTop要求如果Activity Stack顶部已经有目标Activity实例,则直接讲Intent发送给该实例,而不创建新实例。如Activity Stack没有该实例,则创建新实例;
“singleTask”和”singleInstance”则只产生一个实例,并且是Task的根元素。“standard”和”singleTop”可以被实例化多次,并且是可以存在于不同的task中;这种实例化时一个task可以包括一个activity的多个实例;“singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。
3.是否允许其他Activity存在于本Task内的区别:
“singleInstance”独占一个Task,其他Activity均不能存在于此Task中,如果它启动一个新的Activity,不管新的Activity的launch mode如何,新的Activity都将运行于其他Task里;
另外三种模式则可以和其他Activity共存。
4.是否每次都生成新实例的区别:
“standar”模式每次都生成一个新的Activity实例;
“singleTop”的Activity如果在Task的Activity Stack顶部则不生成新实例,直接使用此实例,否则生成一个新实例。
“singleeInstance”是其所在Task的Activity Stack里的唯一Activity实例,它每次都会被重用
“singleTask”如果在Task的Activity Stack的顶部,则接收intent,否则该intent会被丢弃,但仍然会该Task返回前台。
分享到:
相关推荐
activity的四种加载模式:<!-- 不写的话也默认是standard --> <!-- standard表示每执行一次startactivity就新建一个实例 singleTop表示每次执行startactivity时,如果当前activity在taskstack的顶端,则不...
总之,Android的四种Activity加载模式提供了一种灵活的方法来管理Activity实例和任务,帮助开发者实现更高效、更流畅的应用体验。在设计应用程序的导航流程时,充分理解和利用这些模式是非常重要的。
安卓中Activity的三种Intent跳转方式 在 Android 开发中,Intent 是一种基本的通信机制,用于在应用程序之间或应用程序内部进行数据交换和功能调用。Activity 是 Android 应用程序的基本组成部分,用于提供用户界面...
Activity 的四种加载模式对于应用程序的导航和行为有着显著的影响。理解这些模式对于优化用户体验和避免意外的行为至关重要: 1. standard 模式是最常见的,每次启动 Activity 都会创建新的实例。这可能导致 Task ...
Android系统中Activity的四种加载模式 Android系统中的Activity是一种非常重要的组件,它是Android应用程序的基本组成单元之一。在实际的Android应用程序中,一个Android软件往往包含多个Activity,每个Activity...
本示例"Activity加载模式demo"将深入探讨四种不同的Activity加载模式,并通过代码演示如何实现它们。 1. **标准模式(Standard)** 标准模式是最常见的Activity加载模式,也是默认模式。在这种模式下,每次启动...
本项目提供了对Android Activity四种启动模式的实例演示,让我们逐一深入理解这四种模式。 1. standard(标准模式) 这是Activity的默认启动模式。在standard模式下,每次启动一个Activity都会创建一个新的实例,...
### Android 四种加载模式详解 在Android应用开发中,理解Activity的加载模式至关重要,它直接关系到应用程序的性能和用户体验。本篇文章将深入解析四种加载模式:`standard`、`singleTop`、`singleTask`和`...
本文将深入探讨Activity的四种启动模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop),并结合博客《Activity四种启动模式》中的内容进行详细解释。...
本示例代码详细展示了Activity的四种启动模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。 1. 标准模式(Standard): 这是Activity的默认启动...
了解和掌握Activity的四种启动模式对于优化用户体验和应用性能至关重要。 1. **standard模式** 这是最常见的启动模式,也是默认模式。在standard模式下,每当用户通过意图(Intent)启动Activity时,系统都会创建...
本篇文章将深入探讨Activity的四种启动模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。 **标准模式(Standard)** 这是Activity的默认启动模式,...
`Activity`的属性和加载模式对于理解Android应用的行为至关重要。这篇博客文章可能深入探讨了这些概念。 首先,让我们来了解一下`Activity`的一些基本属性: 1. **标签(Label)**:这是显示在用户界面上的文本,...
Activity有四种不同的工作模式,这些模式决定了当用户在多个Activity之间切换时,它们如何被管理以及内存如何使用。理解并掌握这些模式对于优化应用的用户体验和性能至关重要。 1. **标准模式(Standard)** 标准...
ActivityTask是怎么进行设计的,以及Activity四种加载模式。
本文将深入探讨Activity的四种启动模式,旨在帮助你更好地理解它们的工作原理,并能灵活运用到实际项目中。 首先,我们来看看Activity的启动模式有哪些: 1. **标准模式(Standard)**:这是默认的启动模式,每次...
在Android应用开发中,Activity是用户界面的基本组件,它负责展示和交互。本文将深入探讨Activity的加载模式以及其...阅读提供的"Activity加载模式及生命周期"文档,将有助于你深入理解这些概念,并将其应用于实践中。