Android(java)学习笔记168:Activity 4 种启动模式
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 种启动模式的更多相关文章
- Android开发学习之路--Activity之四种启动模式
后天终于可以回家了,马上就要过年了,趁着年底打酱油的模式,就多学习学习,然后记录记录吧.关于Activity已经学习了七七八八了,还有就是Activity的四种启动模式了,它们分别为,standard ...
- Android Activity 四种启动模式
task和back stack(任务和回退栈) 任务启动,task被加入到回退栈的栈顶,返回的时候回退栈的栈顶任务会被弹出,并被销毁,栈中的前一任务恢复运行,当activity销毁是,系统不会保留ac ...
- Android(java)学习笔记225:Activity 4 种启动模式
1. 任务栈(task stack): 任务栈 是用来记录用户操作的行为,维护一个用户体验. 一个应用程序一般都是由多个activity组成的. 任务栈(task stack)记录存放用户开启的act ...
- Android -- Activity的生命周期,Activity四种启动模式 Standard, SingleTop,SingleTask,SingleInstance
1. 示例图 . 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: Activity的完整生命周期自第一次调用onCreate()开始,直至调 ...
- Activity四种启动模式之singleTask应用
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode=" ...
- 简单易懂的Activity四种启动模式
Activity的四种启动模式 我们在项目开发的过程中,会涉及到应用中各个Activity的跳转,有些Activity是可以复用,不用重复加载,节约内存的使用. 将第二个Activity的启动模式修改 ...
- Activity四种启动模式与Flag及affinity属性详解
Activity有四种加载模式:standard(默认).singleTop.singleTask.singleInstance standard:Activity的默认加载模式,即使某个Activi ...
- Android入门:Activity四种启动模式
一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置: 启动模式有4种,分别为standa ...
- android:Activity四种启动模式简单介绍
Activity启动模式 能够依据实际的需求为Activity设置相应的启动模式,从而能够避免创建大量反复的Activity等问题 Activity有四种载入模式 1.standard(默认启动模式, ...
随机推荐
- 【POJ 2411】 Mondriaan's Dream
[题目链接] 点击打开链接 [算法] 很明显,我们可以用状态压缩动态规划解决此题 f[n][m]表示n-1行已经放满,第n行状态为m的合法的方案数 状态转移方程很好推 注意这题时限较紧,注意加一些小优 ...
- Python-Django使用MemcachedCache缓存
最近工作中使用到缓存,简单记录之... 关于django的几种缓存方式,就不在做介绍了,网上一搜一大把:1.8.2官方文档, Django 缓存,Python菜鸟之路:django缓存 学习了之后,选 ...
- PYTHON路线图
路线图: 第一部分:Python语言基础 第二部分:数据库开发 第三部分:web前端 第四部分:Python web开发 第五部分:Python web项目 第六部分:Linux 第七部分:NoSQL ...
- CKD 实现
主要功能: 1.新物料(部品号)的入库管理 部品号的验证.描述.品名.重量.单价等 2.部品号-供应商的核对 校验部品号/供应商的对应情况.入库.移除等 3.BOM清单的导入 基础清单的导入 4.订单 ...
- Docker 概念及基本用法
Docker 概念及基本用法 一. 本节内容简介 本实验中我们初步接触Docker的概念和基本用法.需要依次完成下面几项任务: 理解Docker是什么 学习如何在Linux上安装Docker 学习如何 ...
- Gearman1.1.12安装与启动
1)安装 a)安装gcc4.4环境: i. yum install gcc44 gcc44-c++ libstdc++44-devel gcc-c++ -y ii. 在/etc/profile中添加 ...
- 008--linux 基础之网络配置和ssh服务
一.linux网络配置 ifconfig eno16777736 192.168.19.48/24 | eno16777736(网卡名) 192.168.19.48/24(临时IP地址) ...
- 任务46:Identity MVC:登录逻辑实现
任务46:Identity MVC:登录逻辑实现 实现登陆的方法 退出方法 _layout里面增加如下的代码: Login.cshtml 运行代码测试: 这个地方的单词之前拼错了.这里进行修正 输入账 ...
- python __builtins__ map类 (44)
44.'map', 根据提供的函数对指定序列做映射. class map(object) | map(func, *iterables) --> map object | | Make an ...
- Music in Car CodeForces - 746F
Music in Car CodeForces - 746F 题意很难懂啊... 题意:http://blog.csdn.net/a838502647/article/details/74831793 ...