在上一篇博客中,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启动模式-应用场景的更多相关文章

  1. Android Activity 启动模式详解

    最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了 ...

  2. AndroidのActivity启动模式

    Activity启动模式      .概念      Activity启动模式定义了Activity启动的规则,它决定着Activity的实例创建与重用与否    .属性     Activity的启 ...

  3. Android Activity启动模式

    <activity android:name=".MainActivity" android:launchMode="singleTask"> &l ...

  4. Android Activity 启动模式和任务栈

    在了解了基本的Activity的生命周期后,我们能够很好的在一个Activity上面做相关的业务.但是这是不够的,因为Android通过任务栈来保存整个APP的Activity,合理的调度任务栈才能够 ...

  5. 详解Android Activity启动模式

    相关的基本概念: 1.任务栈(Task)   若干个Activity的集合的栈表示一个Task.   栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...

  6. android:Activity启动模式之singleTask(一)

    先看一下standard启动模式的说明: 仅仅有一个实例.在同一个应用程序中启动他的时候.若不存在此Activity实例.则会在当前栈顶创建一个新的实例.若存在,则会把栈中在其上的其他Activity ...

  7. android activity 启动模式

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 1,标准的, 2,单个 顶部 3,单个 任务 4,单个 实例 标准的 就是 每启动一次这 ...

  8. Android组件体系之Activity启动模式解析

    本文主要分析Activity的启动模式及使用场景. 一.Activity启动模式浅析 1.standard 标准模式,系统默认的启动模式.在启动Activity时,系统总是创建一个新的Activity ...

  9. Android中Activity启动模式详解

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

  10. 【转】Android总结篇系列:Activity启动模式(lauchMode)

    [转]Android总结篇系列:Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些 ...

随机推荐

  1. java 面向对象 — 类和对象

    构造方法 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个.1个或1个以上的参数 4.构造器没有返回值 5.构造器 ...

  2. [DP题]登山

    描述 五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号.同时队员们还有另一个登山习惯,就是 ...

  3. 腾讯互娱开源分布式开发框架Pebble

    构建游戏世界的Pebble 愿景:出色的游戏服务器端底层框架   现代游戏项目中,为了让更多的玩家能在一起玩,游戏服务器所需要承载的在线玩家数量越来越多.同时为了让游戏更好玩,越来越多复杂的业务逻辑都 ...

  4. ylbtech-Tool:

    ylbtech-Tool: 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返回顶部   10. ...

  5. 我的solr学习笔记--solr admin 页面 检索调试

    前言 Solr/Lucene是一个全文检索引擎,全文引擎和SQL引擎所不同的是强调部分相关度高的内容返回,而不是所有内容返回,所以部分内容包含在索引库中却无法命中是正常现象.      多数情况下我们 ...

  6. linux-ububtu64位安装docker,及基本命令

    安装:貌似只支持64位 sudo apt-get install docker sudo apt-get install docker.io sudo apt-get install docker-r ...

  7. 关于json_encode转义斜杠的问题

    加上参数  JSON_UNESCAPED_SLASHES即可 echo json_encode($data,JSON_UNESCAPED_SLASHES);

  8. mysql统计一个库里面的表的总数

    SELECT COUNT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA = 'weixin_platform' weixi ...

  9. eclipse Android 开发基础 Activity 窗体 界面

    eclipse Android 开发基础 新建工程 新建布局layout,new Android Activity就相当于窗体Form. 新建Activity自动生成src下同名的java代码. pu ...

  10. MYISM表并发写请求过多 导致无法被读取解决方案

    MyISAM锁调度是如何实现的呢,这也是一个很关键的问题.例如,当一个进程请求某个MyISAM表的读锁,同时另一个进程也请求同一表的写锁,此时MySQL将会如优先处理进程呢?通过研究表明,写进程将先获 ...