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. 【POJ 2411】 Mondriaan's Dream

    [题目链接] 点击打开链接 [算法] 很明显,我们可以用状态压缩动态规划解决此题 f[n][m]表示n-1行已经放满,第n行状态为m的合法的方案数 状态转移方程很好推 注意这题时限较紧,注意加一些小优 ...

  2. Python-Django使用MemcachedCache缓存

    最近工作中使用到缓存,简单记录之... 关于django的几种缓存方式,就不在做介绍了,网上一搜一大把:1.8.2官方文档, Django 缓存,Python菜鸟之路:django缓存 学习了之后,选 ...

  3. PYTHON路线图

    路线图: 第一部分:Python语言基础 第二部分:数据库开发 第三部分:web前端 第四部分:Python web开发 第五部分:Python web项目 第六部分:Linux 第七部分:NoSQL ...

  4. CKD 实现

    主要功能: 1.新物料(部品号)的入库管理 部品号的验证.描述.品名.重量.单价等 2.部品号-供应商的核对 校验部品号/供应商的对应情况.入库.移除等 3.BOM清单的导入 基础清单的导入 4.订单 ...

  5. Docker 概念及基本用法

    Docker 概念及基本用法 一. 本节内容简介 本实验中我们初步接触Docker的概念和基本用法.需要依次完成下面几项任务: 理解Docker是什么 学习如何在Linux上安装Docker 学习如何 ...

  6. Gearman1.1.12安装与启动

    1)安装 a)安装gcc4.4环境: i.  yum install gcc44 gcc44-c++ libstdc++44-devel gcc-c++ -y ii. 在/etc/profile中添加 ...

  7. 008--linux 基础之网络配置和ssh服务

    一.linux网络配置 ifconfig eno16777736 192.168.19.48/24   |   eno16777736(网卡名)   192.168.19.48/24(临时IP地址) ...

  8. 任务46:Identity MVC:登录逻辑实现

    任务46:Identity MVC:登录逻辑实现 实现登陆的方法 退出方法 _layout里面增加如下的代码: Login.cshtml 运行代码测试: 这个地方的单词之前拼错了.这里进行修正 输入账 ...

  9. python __builtins__ map类 (44)

    44.'map',  根据提供的函数对指定序列做映射. class map(object) | map(func, *iterables) --> map object | | Make an ...

  10. Music in Car CodeForces - 746F

    Music in Car CodeForces - 746F 题意很难懂啊... 题意:http://blog.csdn.net/a838502647/article/details/74831793 ...