1. 任务栈(task stack):

任务栈 是用来记录用户操作的行为,维护一个用户体验。

一个应用程序一般都是由多个activity组成的。

任务栈(task stack)记录存放用户开启的activity的。
一个应用程序一被开启,系统就给他分配一个任务栈,当所有的activity都退出的时候,任务栈就清空了。
任务栈的id是一个integer的数据类型 自增长的。
在Android操作系统里面会存在多个任务栈,一个应用程序对应着一个任务栈。

下面是发邮件过程理解任务栈:

当我们点击发送之后,Activity C就关闭了,就会从任务栈中消失,这样这时候用户就会看到任务栈顶端是Activity B,这样用户看到就是B;接下来用户在Activity B中点击返回,这样Activity B就会销毁,用户此时就会看到Activity A,在Activity A中点击返回,就会退出这个应用程序。

2. Activity启动模式

可以参看:Activity启动模式图文详解:standard, singleTop, singleTask 以及 singleInstance

在清单文件中activity节点中配置 android:launchMode属性

(1)standard的启动模式,默认标准的启动模式

<activity   android:name ="com.itheima.taskstack.SecondActivity"

                android:launchMode="standard"/>              

     绝大多数的Activity都是采用的standard的启动模式,开启新的Activity,这个Activity就会被加载到任务栈的栈顶。返回退出Activity,就会从任务栈中里面移除。如果任务栈清空,应用程序退出。

例如A启动A,A再接着启动A,A继续启动A,然后再分别出栈,如图所示:

应用场景:绝大多数默认情况

(2)singleTop的启动模式

<activity   android:name ="com.itheima.taskstack.SecondActivity"

                android:launchMode="singleTop"/>  

任务栈顶部只有一个SecondActivity实例存在,如果这个SecondActivity的实例已经被加入任务栈的顶部,这个SecondActivity就不会被重新创建

(用户想不断创建新SecondActivity刷新界面,这里就是行不通的)

应用场景:一个界面避免重复开启很多次。singletop,浏览器的书签

(3)singleTask的启动模式

<activity   android:name ="com.itheima.taskstack.SecondActivity"

                android:launchMode="singleTask"/>  

单一任务栈:在任务栈里面只可以有1个实例存在

如果没有实例,就创建,加入到任务栈的栈顶

如果有实例已经存在,就可以复用这个实例,然后清空这个实例上面的所有的Activity。

应用场景:如果一个Activity的内存开销或者cpu开销非常大。一般我们设置这个Activity为singleTask的启动模式。保证任务栈中里面只有一个实例存在

e.g:

浏览器的BrowserActivity内存开销非常大

webkit浏览器的内核。解析html标签。解析css标签。javaScript解析引擎

(4)singleInstance的启动模式

<activity   android:name ="com.itheima.taskstack.SecondActivity"

                android:launchMode="singleInstance"/>  

前面3种启动模式Activity都是运行在当前的应用程序默任务栈里面

singleInstance是自己单独开启一个任务栈运行

在自己的单独任务栈里面运行,整个手机的操作系统里面只可能同时存在一个singleInstance实例的Activity

假设B启动A,A启动C,其中A的启动模式为singleInstance,则:

应用场景:有道词典,快速取词 ,通话界面等等

Android(java)学习笔记168:Activity 4 种启动模式的更多相关文章

  1. Android开发学习之路--Activity之四种启动模式

    后天终于可以回家了,马上就要过年了,趁着年底打酱油的模式,就多学习学习,然后记录记录吧.关于Activity已经学习了七七八八了,还有就是Activity的四种启动模式了,它们分别为,standard ...

  2. Android Activity 四种启动模式

    task和back stack(任务和回退栈) 任务启动,task被加入到回退栈的栈顶,返回的时候回退栈的栈顶任务会被弹出,并被销毁,栈中的前一任务恢复运行,当activity销毁是,系统不会保留ac ...

  3. Android(java)学习笔记225:Activity 4 种启动模式

    1. 任务栈(task stack): 任务栈 是用来记录用户操作的行为,维护一个用户体验. 一个应用程序一般都是由多个activity组成的. 任务栈(task stack)记录存放用户开启的act ...

  4. Android -- Activity的生命周期,Activity四种启动模式 Standard, SingleTop,SingleTask,SingleInstance

    1. 示例图 . 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环:  Activity的完整生命周期自第一次调用onCreate()开始,直至调 ...

  5. Activity四种启动模式之singleTask应用

    Activity启动模式设置:         <activity android:name=".MainActivity" android:launchMode=" ...

  6. 简单易懂的Activity四种启动模式

    Activity的四种启动模式 我们在项目开发的过程中,会涉及到应用中各个Activity的跳转,有些Activity是可以复用,不用重复加载,节约内存的使用. 将第二个Activity的启动模式修改 ...

  7. Activity四种启动模式与Flag及affinity属性详解

    Activity有四种加载模式:standard(默认).singleTop.singleTask.singleInstance standard:Activity的默认加载模式,即使某个Activi ...

  8. Android入门:Activity四种启动模式

    一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置: 启动模式有4种,分别为standa ...

  9. android:Activity四种启动模式简单介绍

    Activity启动模式 能够依据实际的需求为Activity设置相应的启动模式,从而能够避免创建大量反复的Activity等问题 Activity有四种载入模式 1.standard(默认启动模式, ...

随机推荐

  1. BZOJ_1713_[Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会_斜率优化

    BZOJ_1713_[Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会_斜率优化 Description Input 第1行输入 ...

  2. FINDSTR 命令使用详解

    Findstr 使用正则表达式搜索文件中的文本模式. 语法 findstr [/b] [/e] [/l] [/r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/ ...

  3. JS中的回调函数实例浅析

    本文实例讲述了JS中的回调函数.分享给大家供大家参考,具体如下: 在说回调函数之前,不妨先看一段代码,相信有点js基础的同学都能明白他的含义: ? 1 2 3 document.getElementB ...

  4. 洛谷 - P1433 - 吃奶酪 - dfs

    https://www.luogu.org/problemnew/show/P1433 并不是每一个求最短距离就是bfs,这个肯定是dfs. 直接计算15!可以知道枚举必定超时,但是! 我们dfs非常 ...

  5. bzoj 5210: 最大连通子块和【动态dp+树剖+线段树+堆】

    参考:https://www.cnblogs.com/CQzhangyu/p/8632904.html 要开longlong的 首先看dp,设f[u]为必选u点的子树内最大联通块,p[u]为不一定选u ...

  6. bzoj 3667: Rabin-Miller算法【Miller-Rabin】

    Miller-Rabin模板 #include<iostream> #include<cstdio> #include<algorithm> using names ...

  7. 解决 Xshell 连接出现 The remote SSH server rejected X11 forwarding request 问题

    问题描述 使用 Xshell 5 首次连接虚拟机 CentOS 7.6 出现这样的提示: WARNING! The remote SSH server rejected X11 forwarding ...

  8. 【CodeForces - 546C】Soldier and Cards (vector或队列)

    Soldier and Cards 老样子,直接上国语吧  Descriptions: 两个人打牌,从自己的手牌中抽出最上面的一张比较大小,大的一方可以拿对方的手牌以及自己打掉的手牌重新作为自己的牌, ...

  9. 重装 Cloudera CDH 5,启动oozie 出错处理

    参考文章:http://community.cloudera.com/t5/Cloudera-Manager-Installation/Error-CDH5-oozie/td-p/8686 按照文章说 ...

  10. 工作中常用css样式总结

    一.HTML隐藏文本输入框 有三种方法: 1.<input type="hidden" value=""> 这是对任何元素都起作用的: 2.< ...