launcherMode

Activity如何被启动呢?Intent对象中与Activity启动相关的标志(FLAG_ACTIVITY_*)有四个。它们分别是:

"standard"     "singleTop"     "singleTask"     "singleInstance"

默认的启动模式是“standard”

四个模式主要分成两组:第一组是 "standard" 和"singleTop" ,"singleTask" 和"singleInstance"是另外一组。Activity以 "standard" 和"singleTop" 这两种模式启动时,可以被实例化多次。其实例可以属于任何Task中,并且可以位于Task的任意位置。通常情况下,它们通过调用startActivity()启动加入到Task中,除非Intent对象中包含了“FLAG_ACTIVITY_NEW_TASK ”的flag,在这种情况下它将进入到不同的Task中。

相比之下, "singleTask" 和"singleInstance"模式启动的Activity只能开始另一个Task,并且它们总是属于这个Task的Root Activity。此外,设备在一段时间内只维持一个该Activity的实例。只有一个这样的Task。

"standard" 和"singleTop"之间只有一个地方不同:对于"standard"模式的Activity,每次有一个Intent启动时,都会生成新的Activity实例,而对于"singleTop"模式启动的Activity来说,如果Activity实例在目标Task的顶部,该Activity被Intent启动时不会产生新的实例(会调用oneNewIntent()),其它情况下,如果Activity在目标Task中但是不在目标Task的顶部 或是 Activity在一个Task的顶部,但是不在目标Task中。它仍会创建一个新实例,进入到目标Task的顶部。

"singleTask" 和"singleInstance"之间也是只有一个地方不同:以 "singleTask"模式开始的Activity,允许其它的Activity加入到它所到的Task,它始终是这个Task的Root Activity,其它能进入到这个Task的Activity的启动模式一定是 "singleTask" 和"singleInstance"这两种模式。"singleInstance"启动的Activity也会开始一个Task,但是它不允话其它的Activity进入到它所在的Task,它是此Task的唯一的Activity同样也是Root Activity。

1.standard

默认启动方式。系统总是在目标Task中创建一个新的Activity实例。

2.singleTop

如果在目标Task的顶部已存在Activity实例,系统将通过该实例调用onNewIntent()方法,而不创建新的Activity实例。

3.singleTask

系统创建新的Activity实例,开启新的Task,并将Activity的实例做为新Task的根Activity。但是如果Activity的实例已经存在,系统会通过该实例调用onNewIntent()方法,而不是创建一个新的实例。

4.singleInstance

同“singleTask”一样,但是系统不会将其它Activity的实例放入到拥有该Activity实例的Task,该Activity实例将独占一个Task

Activity Launch Mode的更多相关文章

  1. Android模拟器出现emulator-5554 disconnected! Cancelling activity launch !的解决办法

    关于 emulator-5554 disconnected! Cancelling 'xxx activity launch'!的问题,解决方法: d: cd D:/Program Files/and ...

  2. Android Activity学习笔记(一)

    Activity为Android应用的四大组件之一,提供界面来与用户完成交互等操作.其中Activity的生命周期的知识这里做个笔记. Activity的生命周期由以下几个部分组成: 1.onCrea ...

  3. android程序报错“error launching activity com.android.ddmlib.shellcommandunresponsiveexception”的解决方式

    今天在调试android程序的时候,因为是NDK开发,要先编译.so库再打包下载到android模拟器,所以花费的时间比較长.控制台就会报例如以下错误: error launching activit ...

  4. 通过命令启动一个activity(am pm 命令)

    一.am的含义是activityManager 主要作用是启动activity.service .broadcast    1.通过adb命令启动acitvity,首先需要设置activity 的 e ...

  5. Android Activity启动耗时统计方案

    作者:林基宗 Activity的启动速度是很多开发者关心的问题,当页面跳转耗时过长时,App就会给人一种非常笨重的感觉.在遇到某个页面启动过慢的时候,开发的第一直觉一般是onCreate执行速度太慢了 ...

  6. Android之Activity启动流程详解(基于api28)

    前言 Activity作为Android四大组件之一,他的启动绝对没有那么简单.这里涉及到了系统服务进程,启动过程细节很多,这里我只展示主体流程.activity的启动流程随着版本的更替,代码细节一直 ...

  7. ATMS中去拉起新的进程,并在新进程启动后调用attachApplication时,resume待启动的Activity

    相关文章: ATMS中去pause Activity A. 目录 ATMS拉起新进程 堆栈 resumeTopActivityInnerLocked:1684, ActivityStack start ...

  8. Android Log Tag含义

    在分析Android问题的时候重要的手段之一就是分析log,在events.log中有很多系统log,其中有些log的含义并不是很了解,下面就是从安卓源码中得到的系统log的tag. 关于Tag的说明 ...

  9. ADB am 命令详细参数

    usage: am [subcommand] [options] usage: am start [-D] [-W] [-P <FILE>] [--start-profiler <F ...

随机推荐

  1. Java学习笔记(一):数据类型与变量

    数据类型 Java中存在2种数据类型,下面我们来详解一下: 基本数据类型: 引用数据类型: 可以用一张表来记录: 基本数据类型 整型 byte:1个字节8位,取值范围为:[-128, 127],直接写 ...

  2. checked 选中

    <input type="radio" name="singleAnswer" value="0" <s:property va ...

  3. CSS3教程:Transform的perspective属性设置

    1 2   <div id="animateTest" style="-webkit-transform: perspective(400px) rotateY(4 ...

  4. getDefinitionByName与ApplicationDomain.getDefinition

    主swf 定义:MC,被加载swf 定义:MC.MC1 ①父SWF的应用程序域的新建子域 (默认方式)称其为应用程序域的继承 var app:ApplicationDomain=new Applica ...

  5. 读《C# 和 Java 的比较》有感

    网上的一篇<C# 和 Java 的比较>(或者叫<Java 和 C# 的比较>)写的挺不错的,今天忽然搜索到. 自己刚刚接触C#,也不由自主地随时都拿来和Java做对比,所以就 ...

  6. C++的XML编程经验――LIBXML2库使用指南[转]

    C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...

  7. confirm使用方法

    定义和使用方法 confirm() 方法用于显示一个带有指定消息和 OK 及取消button的对话框. 语法 confirm(message) 參数 描写叙述 message 要在 window 上弹 ...

  8. iOS开发——动画篇Swift篇&炫酷弹出菜单

    炫酷弹出菜单   这个是一个第三方按钮菜单组件,原版是使用Objective-C编写的名为AwesomeMenu的组件,地址是:https://github.com/levey/AwesomeMenu ...

  9. adobe air 通用设置

    某些应用程序描述符设置对所有移动设备应用程序都很重要. 所需的 AIR 运行时版本 使用应用程序描述符文件的命名空间指定应用程序所需的 AIR 运行时版本. 在 application 元素中分配的命 ...

  10. asp.net常用函数

    ASP.NET网络编程中常用到的27个函数集 Abs(number) 取得数值的绝对值.   Asc(String) 取得字符串表达式的第一个字符ASCII 码.   Atn(number) 取得一个 ...