`
flycomos.lee
  • 浏览: 280496 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

singleTop和singleTask有什么区别?(活动 Activity 四种加载模式)

 
阅读更多

singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例。(注意是栈顶,不在栈顶照样创建新实例!)

singleTask模式:当intent到来,需要创建singleTask模式Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接将intent发送给它。

Activity的四种加载模式:

 

1、standard :系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为Act1,执行语句:

 startActivity(new Intent(Act1.this, Act1.class));

后Act1将跳转到另外一个Act1,也就是现在的栈里面有 Act1 的两个实例。按返回键后你会发现仍然是在Act1(第一个)里面。

 

2、singleTop:singleTop 跟standard 模式比较类似。唯一的区别就是,当跳转的对象是位于栈顶的activity(应该可以理解为用户眼前所 看到的activity)时,程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例。拿上面的例子来说,当 Act1 为 singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。这个貌似用得比较少。

 

3、singleTask: singleTask模式和后面的 singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例 (当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多activity开发中, 经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为 singleTask 模式,这种问题将不复存在。不过前阵子好像又看过有人说一般不要将除开始页面的其他页面设置为 singleTask 模式,原因暂时不明,哪位知道的可以请教下。

 

4、singleInstance: 设置为 singleInstance 模式的 activity 将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他 activity是独立的,它有自己的上下文activity。拿一个例子来说明吧:

现在有以下三个activity: Act1、Act2、Act3,其中Acti2 为 singleInstance 模式。它们之间的跳转关系为: Act1 -- Act2 -- Act3 ,现在在Act3中按下返回键,由于Act2位于一个独立的task中,它不属于Act3的上下文activity,所以此时将直接返回到Act1。这就 是singleInstance模式。

分享到:
评论

相关推荐

    activity的四种加载模式

    activity的四种加载模式:<!-- 不写的话也默认是standard --> <!-- standard表示每执行一次startactivity就新建一个实例 singleTop表示每次执行startactivity时,如果当前activity在taskstack的顶端,则不...

    Android Activity的四种加载模式区别

    总之,Android的四种Activity加载模式提供了一种灵活的方法来管理Activity实例和任务,帮助开发者实现更高效、更流畅的应用体验。在设计应用程序的导航流程时,充分理解和利用这些模式是非常重要的。

    activity的四种加载模式分析

    Activity 的四种加载模式对于应用程序的导航和行为有着显著的影响。理解这些模式对于优化用户体验和避免意外的行为至关重要: 1. standard 模式是最常见的,每次启动 Activity 都会创建新的实例。这可能导致 Task ...

    Android系统中Activity的四种加载模式.pdf

    Android系统中Activity的四种加载模式 Android系统中的Activity是一种非常重要的组件,它是Android应用程序的基本组成单元之一。在实际的Android应用程序中,一个Android软件往往包含多个Activity,每个Activity...

    Activity加载模式demo

    本示例"Activity加载模式demo"将深入探讨四种不同的Activity加载模式,并通过代码演示如何实现它们。 1. **标准模式(Standard)** 标准模式是最常见的Activity加载模式,也是默认模式。在这种模式下,每次启动...

    Android 四种加载模式

    本篇文章将深入解析四种加载模式:`standard`、`singleTop`、`singleTask`和`singleInstance`,并提供实际应用场景,帮助开发者更好地掌握这些核心概念。 #### 1. Standard模式 Standard模式是最常见的加载模式,...

    android Activity加载方式

    接下来,我们将详细讨论Android Activity的四种加载模式:standard、singleTop、singleTask和singleInstance,并通过示例分析它们之间的区别。 1. **standard(标准模式)** 这是Activity的默认加载模式,不需要在...

    Activity加载模式讲解

    在Android应用开发中,Activity是用户界面的基本组件,它负责展示和交互。本文将深入探讨Activity的加载模式以及其...阅读提供的"Activity加载模式及生命周期"文档,将有助于你深入理解这些概念,并将其应用于实践中。

    activity属性,加载模式等

    `Activity`的属性和加载模式对于理解Android应用的行为至关重要。这篇博客文章可能深入探讨了这些概念。 首先,让我们来了解一下`Activity`的一些基本属性: 1. **标签(Label)**:这是显示在用户界面上的文本,...

    Android编程之四种Activity加载模式分析

    本文将详细解析Android编程中的四种Activity加载模式:standard、singleTop、singleTask和singleInstance,帮助开发者更好地理解和掌握Activity的生命周期及切换逻辑。 首先,Activity的状态主要有四种:活动的...

    安卓的学习

    Activity有四种不同的启动模式,分别是:standard、singleTop、singleTask和singleInstance。这些模式主要决定了当用户点击一个Intent启动Activity时,系统如何处理已存在的或新建的Activity实例。 1. **standard...

    android activity和task

    5. Activity的四种加载模式: - 标准模式(Standard):每次启动都会创建新的实例,可以放入任何Task。 - 单实例模式(SingleInstance):在整个系统中只有一个实例,且总是在新的Task中启动。 - 单任务模式...

    Activity界面的转化

    启动模式是Activity启动时的一种策略,有四种主要模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。标准模式是最常见的,每个启动都会创建新的...

    全面解析Android应用开发中Activity类的用法

    6. **Activity的四种启动模式**: - `standard`(默认模式):每次启动都会创建一个新的Activity实例。 - `singleTop`:如果目标Activity已经在栈顶,不会创建新的实例,而是调用其`onNewIntent(Intent)`方法。 -...

    Activity从底部悬浮

    - 单实例模式(singleInstance):在单独的任务栈中仅有一个该Activity实例,且不会和其他任何Activity共享栈。 2. 布局动画: - Android提供了View动画和属性动画两种方式来实现布局的动态效果。 - View动画...

    行业分类-设备装置-一种应用于Android平台的启动活动的方法和装置.zip

    2. 合理使用启动模式:如singleTop、singleTask、singleInstance,以控制Activity实例的数量,避免内存浪费。 3. 使用Intent.FLAG_ACTIVITY_CLEAR_TOP或FLAG_ACTIVITY_SINGLE_TOP来管理Activity栈,优化回退体验。 ...

    疯狂android讲义第四章4.3节

    "疯狂Android讲义第四章4.3节"深入探讨了Activity的生命周期和加载模式,这对于理解和优化应用的行为至关重要。以下是对这些关键概念的详细阐述。 首先,Activity的生命周期是Android系统管理每个Activity实例的一...

    安卓 activity 生命周期

    四、Activity的启动模式 1. Standard:默认模式,每次启动都会创建一个新的实例。 2. SingleTop:如果栈顶已经存在该Activity实例,系统不会创建新的,而是调用`onNewIntent(Intent intent)`。 3. SingleTask:在...

Global site tag (gtag.js) - Google Analytics