standard(标准模式): 当用ApplicationContext去启动standard模式时会报错,是因为非Activity类型的Context没有所谓的任务栈,

所以需要为待启动的Activity指定FLAG_ACTIVITY_NEW_TASK标记位,这样就会为它创建一个新的任务栈,其实待启动的Activity是以singleTask模式启动的

singleTop(栈顶复用模式):如果新Activity已经位于任务栈的栈顶,则不会重新创建,同时它的onNewIntent会被回调,通过此方法的参数可以取出当前请求的信息

singleTask(栈内复用模式):只要该Activity在一个栈中存在,就不会创建新的实例,系统也会调用其onNewIntent,具体来讲,当一个具有该模式的Activity启动时,会首先寻找是否有其想要的任务栈,

如果没有就会重新创建一个任务栈将其实例放在里面,如果有,会看在其栈内是否存在该实例,如果有就会使该实例之上的实例出栈将其置于栈顶并调用其onNewIntent,如果没有,则会创建新的实例压入栈内

singleInstance(单实例模式):除了具有singleTask的所有特性外,还有一点是,具有该模式的Activity只能单独位于一个任务栈中,而且该Activity只会有一个该实例

有一种比较特殊的情况,现在有两个任务栈,前台任务栈是AB,后台任务栈是CD,当从B启动C,系统就会使D出栈,C位于栈顶位置,

用户连续按下back键,首先出栈的是C,这时C的任务栈为空,又执行AB所在的任务栈,使得B,A顺序出栈,直至退出程序.

Android开发之启动模式的深入理解的更多相关文章

  1. Android开发——Activity启动模式详解

    1. Activity的启动模式 本文原创,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52054893 1.1 Standard标 ...

  2. android 开发 singleTask启动模式下传值的坑

    日常填坑. 做了什么操作引起的?如下: 在活动A 启动模式设置为singleTask ,然后再用活动A启动活动B,活动B启动活动C. 现在我的活动C要使用intent携带值去启动活动A.在活动A中正常 ...

  3. android Activity的启动模式

    Android中Activity启动模式详解   在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启 ...

  4. Android开发艺术探索第五章——理解RemoteViews

    Android开发艺术探索第五章--理解RemoteViews 这门课的重心在于RemoteViews,RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,Rem ...

  5. android 4种启动模式

    在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: ...

  6. Android中的启动模式(下)

    在这篇文章中,我会继续跟大家分享有关于Android中启动模式的相关知识.当然,如果对这个启动模式还不完全了解或者没有听过的话,可以先看看我之前写的有关于这个知识点的入门篇Android的启动模式(上 ...

  7. Android Activity各启动模式的差异

    Activity共有四种启动模式:standard,singleTop,singleTask,singleInstance 为了方便描述和理解,布局文件.Manifest文件和各个java文件如下: ...

  8. Android 之Activity启动模式(二)之 Intent的Flag属性

    首页博客链接关于我留言板 前面介绍了通过launchMode设置Activity的启动模式.本章接着介绍Activity的启动模式相关内容,讲解的内容是Intent与启动模式相关的Flag,以及and ...

  9. 74.Android之四种启动模式

    转载:http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html 一.启动模式介绍 启动模式简单地说就是Activity启动时的 ...

随机推荐

  1. [html5] 学习笔记-响应式布局

    1.响应式布局介绍 响应式布局是2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是每一个终端做一个特定的版本.这个概念是为了兼容移动互联网浏览而诞生的,其目的是为用户提供 ...

  2. 使用cordova开发app

    前言 公司之前用的app就是一个套壳挂个链接就能用的app,后来需要添加微信分享方便传播,没办法只好做成混合式的app了, 因为之前做.net用vs可以创建cordova项目也试着玩过,就决定用cor ...

  3. Quartz_理解2

    一.核心概念   Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可.   1.Job 表示一个工作,要执行的具体内容.此接口中只有一个方法 void exec ...

  4. 日志组件 logback

    一.简介 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logb ...

  5. 关系型数据库MySql-模糊搜索优化(like %abc%):全文搜索引擎技术选型

    1.阿里云OpenSearch 阿里云开放搜索OpenSearch是一款阿里巴巴自主研发的大规模分布式搜索引擎平台,该平台承载了淘宝.天猫.1688.神马搜索.口碑.菜鸟等搜索业务,通过OpenSea ...

  6. IP数据报格式 及路由转发算法

    ip数据报分首部和数据两部分组成: 首部分为固定部分和可变部分 版本--占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 首部长度--占 4 位,可表示的最大数值 是 ...

  7. Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405

    问题 公司项目H5调用接口遇到Response for preflight has invalid HTTP status code 405这样的错误,是使用PUT方式提交请求接口.Content-T ...

  8. c#配置文件的简单操作

    // 配置文件 <?xml version="1.0" encoding="utf-8" ?> <configuration> < ...

  9. DataTable && SqlDataReader帮助理解小程序

    // 2015/07/08 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  10. CREELINKS平台_处理器CeAd资源使用说明(CeAd的配置与使用)

    0x00 CREELINKS平台简介     CREELINKS(创e联)是由大信科技有限公司研发,集合软硬件.操作系统.数据云储存.开发工具于一体,用于物联网产品的设计.研发与生产的平台.    平 ...