Android-Activity启动模式-应用场景
在上一篇博客中,Android-Activity启动模式(launchMode),就介绍了Activity四种启动模式的特点与使用等,但是到底什么样子的场景,去使用什么样子的启动模式呢

Activity启动模式分为四种:

如果不配置:launchMode,默认就是:standard 标准的
standard 标准的
singleTop 独占顶端
singleTask 单任务
singleInstance 单实例
任务栈存放Activity引用 任务栈 进栈 出栈
最上面的Activity,可以称为:TopActivity 最顶端的Activity
最下面的Activity,可以称为:BaseActivity 最底端的Activity


Activity启动模式,不出意外,使用最多的一定是默认的,standard 标准的
但是standard 标准的 这种启动模式,每启动一个Activity 就进栈一个Activity,这样有些情况下是不合理的,我的Activity在最顶端就没有必要,再次启动进栈一个 或者启动进栈多个
,Activity的引用重复,这样不利于ActivityManager的管理,任务栈Activity引用重复,当点击返回Back操作的时候,体验非常不好;
在App应用中,在TopActivity会被再次启动或者多次启动的时候,就可以采用singleTop来解决,任务栈Activity引用的重复,利于ActivityManager的管理,让体验更加好等...
Android操作系统的 浏览器 书签 Activity的启动模式 就是采用 singleTop


一般情况下,应用程序的主界面(MainActiviy),的启动模式是SingleTask,为什么呢,请看以下图:

Android操作系统 浏览器的主界面Activity的启动模式就是 singleTask



singleInstance 单实例,一个Activity被其他方多次调用(如果不用singleInstance,那会很混乱,好几个人打电话过来怎么办,所以需要singleInstance),
并且这个Activity对性能要求高
Android操作系统/package/apps/Phone/AndroidManifest.xml 找到通话界面

Android操作系统的 通话界面Activity 同时接听两个电话 就体现了singleInstance的特点

singleInstance除了管理Activity界面,不混乱,不多次进栈,等等。
还有另外一个原因:(singleInstance会开辟一个新的任务栈,来存放Activity的引用,可以提高性能,正好通话界面非常注重性能,因为通话界面 是去启动硬件猫打电话系列操作)
Android操作系统的应用Phone-->通话界面的启动模式为什么不用标准模式standard ?
答:1.会非常混乱,例如:多个人打电话过来接听,或者在 操作系统的联系人应用中可以看到,在拨打电话的应用也可以看到,任务栈会被进栈多次,管理非常混乱。
2.standard不会开辟新的任务栈,效率不高,通话界面需要去启动硬件的猫..,很耗时。
Android操作系统的应用Phone-->通话界面的启动模式为什么不用独占顶端模式singleTop ?
答:1.无法保证通话界面Activity在顶端,所以会非常混乱,例如:多个人打电话过来接听,或者在 其他应用打开,在拨打电话的应用也可以看到,任务栈会被进栈多次,管理非常混乱。
2.singleTop不会开辟新的任务栈,效率不高,通话界面需要去启动硬件的猫..,很耗时。
Android操作系统的应用Phone-->通话界面的启动模式为什么不用单任务模式singleTask ?
答:1.singleTask单任务模式,会从底端往上找,一旦找到就直接杀到顶端,这是不合理的,不能杀死其他在singleTask之上的Activity。
2.singleTask不会开辟新的任务栈,效率不高,通话界面需要去启动硬件的猫..,很耗时。
Android-Activity启动模式-应用场景的更多相关文章
- Android Activity 启动模式详解
最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了 ...
- AndroidのActivity启动模式
Activity启动模式 .概念 Activity启动模式定义了Activity启动的规则,它决定着Activity的实例创建与重用与否 .属性 Activity的启 ...
- Android Activity启动模式
<activity android:name=".MainActivity" android:launchMode="singleTask"> &l ...
- Android Activity 启动模式和任务栈
在了解了基本的Activity的生命周期后,我们能够很好的在一个Activity上面做相关的业务.但是这是不够的,因为Android通过任务栈来保存整个APP的Activity,合理的调度任务栈才能够 ...
- 详解Android Activity启动模式
相关的基本概念: 1.任务栈(Task) 若干个Activity的集合的栈表示一个Task. 栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...
- android:Activity启动模式之singleTask(一)
先看一下standard启动模式的说明: 仅仅有一个实例.在同一个应用程序中启动他的时候.若不存在此Activity实例.则会在当前栈顶创建一个新的实例.若存在,则会把栈中在其上的其他Activity ...
- android activity 启动模式
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 1,标准的, 2,单个 顶部 3,单个 任务 4,单个 实例 标准的 就是 每启动一次这 ...
- Android组件体系之Activity启动模式解析
本文主要分析Activity的启动模式及使用场景. 一.Activity启动模式浅析 1.standard 标准模式,系统默认的启动模式.在启动Activity时,系统总是创建一个新的Activity ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- 【转】Android总结篇系列:Activity启动模式(lauchMode)
[转]Android总结篇系列:Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些 ...
随机推荐
- bzoj4891: [Tjoi2017]龙舟
求$\frac{b_1b_2b_3...b_m}{a_1a_2a_3...a_m}\%M$ M<=1e18,m<=100000,数据组数<=50 用pollard-rho分解M的质因 ...
- HDU 1358 Period (kmp判断循环子串)
Period Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- [html][javascript] Cookie
更多可参考:http://www.cnblogs.com/newsouls/archive/2012/11/12/2766567.html // 读 cookie 方法 function getCoo ...
- 【转】httpservlet 文章
HttpServlet类 ellisonDon 2012-10-25 12:42 阅读:2015 评论:0 HttpServlet的功能 ellisonDon 2012-10-25 11:02 ...
- 常见的加密和解密算法—MD5
一.MD5加密概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 13 ...
- JavaScript常见集合操作
JavaScript常见集合操作 集合的遍历 FOR循环(效率最高) 优点:JavaScript最普遍的for循环,执行效率最高 缺点:无法遍历对象 for(let i=0;i<array.le ...
- Solr调研总结(很详细很全面)
Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在 ...
- 全面解析python类的绑定方法与非绑定方法
类中的方法有两类: 绑定方法 非绑定方法 一.绑定方法 1.对象的绑定方法 首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的.下面,我们通过实例,来慢慢解析绑定方法的应用. ...
- 好记性不如烂笔头-linux学习笔记6keepalived实现主备操作
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工 ...
- android手机 ping 虚拟机ubuntu的ip地址
今天使用android手机往虚拟机上ubuntu 上搭建的nginx 和rtmp服务器推送东西的时候,怎么都推不上去. 后来在windows下的cmd里: # adb shell # ping 192 ...