[转]activity的启动方式(launch mode)
在android里,有4种activity的启动模式,分别为:
“standard” (默认)
“singleTop”
“singleTask”
“singleInstance”
它们主要有如下不同:
1. 如何决定所属task
“standard”和”singleTop”的activity的目标task,和收到的Intent的发送者在同一个task内,除非intent包括参数FLAG_ACTIVITY_NEW_TASK。
如果提供了FLAG_ACTIVITY_NEW_TASK参数,会启动到别的task里。
“singleTask”和”singleInstance”总是把activity作为一个task的根元素,他们不会被启动到一个其他task里。
2. 是否允许多个实例
“standard”和”singleTop”可以被实例化多次,并且存在于不同的task中,且一个task可以包括一个activity的多个实例;
“singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。
singleTop要求如果创建intent的时候栈顶已经有要创建 的Activity的实例,则将intent发送给该实例,而不发送给新的实例。
3. 是否允许其它activity存在于本task内
“singleInstance”独占一个task,其它activity不能存在那个task里;如果它启动了一个新的activity,不管新的activity的launch mode 如何,新的activity都将会到别的task里运行(如同加了FLAG_ACTIVITY_NEW_TASK参数)。
而另外三种模式,则可以和其它activity共存。
4. 是否每次都生成新实例
“standard”对于没一个启动Intent都会生成一个activity的新实例;
“singleTop”的activity如果在task的栈顶的话,则不生成新的该activity的实例,直接使用栈顶的实例,否则,生成该activity的实例。
比如现在task栈元素为A-B-C-D(D在栈顶),这时候给D发一个启动intent,如果D是 “standard”的,则生成D的一个新实例,栈变为A-B-C-D-D。
如果D是singleTop的话,则不会生产D的新实例,栈状态仍为A-B-C-D
如果这时候给B发Intent的话,不管B的launchmode是”standard” 还是 “singleTop” ,都会生成B的新实例,栈状态变为A-B-C-D-B。
“singleInstance”是其所在栈的唯一activity,它会每次都被重用。
“singleTask”如果在栈顶,则接受intent,否则,该intent会被丢弃,但是该task仍会回到前台。
当已经存在的activity实例处理新的intent时候,会调用onNewIntent()方法
如果收到intent生成一个activity实例,那么用户可以通过back键回到上一个状态;如果是已经存在的一个activity来处理这个intent的话,用户不能通过按back键返回到这之前的状态。
[转]activity的启动方式(launch mode)相关推荐
- Android中Activity的四种启动方式
谈到Activity的启动方式必须要说的是数据结构中的栈.栈是一种只能从一端进入存储数据的线性表,它以先进后出的原则存储数据,先进入的数据压入栈底,后进入的数据在栈顶.需要读取数据的时候就需要从顶部开 ...
- # android开发:4-1、Activity启动方式、生命周期、不同activity的数据传递
4.Activity活动简介 什么是Activity: 如何创建Activity: Activity启动方式: Activity的生命周期: 不同Activity之间数据的传递: 什么是Activit ...
- Android中Service的启动方式及Activity与Service的通信方式
Service启动的两种方式 1.通过startService启动 使用Service的步骤: 定义一个类继承Service 在Manifest.xml文件中配置该Service 使用Context的 ...
- Activity具体解释(生命周期、启动方式、状态保存,全然退出等)
一.什么是Activity? 简单的说:Activity就是布满整个窗体或者悬浮于其它窗体上的交互界面. 在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的A ...
- Activity的四种启动方式
文章目录 Activity的四种启动模式 一.Android 任务栈 1.1 Android任务栈的概念 二.四种启动模式 2.1 standard 2.2 singleTop 2.3 singleT ...
- Android中Activity的启动流程和组织管理方式(Backstack、Task)
前言: Android对Activity的组织管理会引入一些名词概念术语,像Stack.Task等,本文会做简单介绍.Activity的启动.切换以及组织管理会受不同的配置和属性的影响,本文会简单介绍 ...
- Android Activity的启动流程分析:以Launcher启动一个Activity为例,分析应用进程的创建、Activity的启动,以及他们和AMS之间的交互
文章目录 一. Step1 - Step 11:Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity: Step 1. Laun ...
- 四.Activity的启动流程-ActivityThread启动Activity的过程
Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程. 相关内容链接:and ...
- 安卓activity的启动流程
文章目录 前言 一.概述 二. 启动流程 2.1 Activity.startActivity 2.2 startActivityForResult 2.3 execStartActivity 2.4 ...
最新文章
- Silverlight 开发入门1
- 【已解决】Linux远程桌面连接-VNC
- innodb和my查询速度_mysql存储引擎MyISAM和InnoDB
- 一口气管理几十个中断不是问题
- 数学--数论--欧拉降幂--P5091 欧拉定理
- Caffe查看每一层学习出来的pattern
- python如何使用字典中的值并进行比较_python嵌套字典比较值与取值的实现示例
- ip地址合不合法怎么看_到底醇基燃料合不合法呢?
- 往map里的vector添加_面试官问我同步容器(如Vector)的所有操作一定是线程安全的吗?我懵了!...
- 代码敲慢一点,学得会快一点
- hashmap删除指定key_「集合系列」- 深入浅出分析HashMap
- BOM,DOM, JS,JQ
- centos7从有线切换到无线_TT G821 W1无线三模机械键盘体验:一个键盘满足所有应用场景...
- 通过MapReduce统计每个单子在每个文件中出现的次数(FileSplit的使用),单词作为key,所在文本和次数作为value进行统计...
- 免费不限速不限存储的网盘推荐
- 备考通信复试过程中的一些知识点总结梳理——移动通信系统Ⅱ
- 用html5实现一个播放器,6 个基于 HTML5 实现的多媒体播放器
- 光伏能给企业带来了哪些好处
- 网站统计中的数据收集原理及实现-埋点统计
- wap页面之iphone设备字体偏大问题