好久没用过那几种activity的启动模式了,如今看到singletop竟然傻了眼,完全忘记了这几种启动模式的区别!隧将两年前的总结翻出来,通读一遍那晦涩难懂的记录,又理解了一遍,在以前记录的基础上,重新调整一下语句顺序和用词,并增加一些用来助记的理解。

首先,澄清一个概念,android中一组逻辑上在一起的activity被叫做task,自己认为可以理解成一个activity堆栈。在xml中可以配置那几种令人头大的启动模式(launch mode),不同的启动模式就决定了新的activity实例的逻辑位置。

我们先来介绍两个启动模式,他们分别是standard和singletop,  以这两种模式启动新的activity,新activity将属于当前的task,除非我们特殊指定了要放置在新的task中,这可以用设置FLAG_ACTIVITY_NEW_TASK 标志的方式实现。

除了以上介绍的两种启动模式,我们还有singletask和singleinstance两种模式,这两种的模式的activity只能存在于新的task中,就好像是天然地拥有FLAG_ACTIVITY_NEW_TASK 标志,从字面意义上看singletask是指新的activity实例只会存在于单独的task中,而singleinstance的字面意义上理解是只能存在单独的实例,在其所在的task中,不能有其他activity实例,很霸道吧!singletask就没这样的要求,它可以和别的activity的实例挤在同一个task中,但是自己的实例也只能有一个。

在接到新的intent请求时候,不同的启动模式的activity有不同的表现,standard模式的activity会生成新的实例来处里请求,而singletop的activity如果有实例在task的最顶端,那么它将会复用这个实例来处里请求,否则,产生新的实例,这可能是singletop名字的来历吧!singleinstance因为其所在task中只有它自己一个实例,所以可以轻松复用。至于singletask,如果新的intent请求到来时,singletask的实例在task的最顶端,那么复用此实例,如果没有,则不响应此请求,但是singletask的实例会被调到前台显示。

PS: 在代码中找不到设置launchmode的地方,只能在xml中设置它,这是为了保证在运行时一个activity的launchmode是不变的。

Activity 的启动模式的更多相关文章

  1. 关于activity的启动模式

    在Android中每个界面都是一个Activity ,界面的切换实际上是对不同Activity实例化的过程.而启动模式就决定Activity启动运行方式. 1.设置方式它是在主配置文件中,Activi ...

  2. 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)

    1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...

  3. android Activity的启动模式与flag的见解

    最近做一个安卓项目,想要实现的效果就是:当打开一个按钮的时候,启动了一个A功能,当用户返回到桌面再继续进去的时候,不过之前在哪个Activity,都会先跳转到A功能的那个界面,当用户点击返回的时候,再 ...

  4. android Activity的启动模式

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

  5. Activity的启动模式(android:launchMode)

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

  6. 4种activity的启动模式

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

  7. Activity的启动模式及回退栈的概念

    Activity的启动模式 standard 正常模式 在创建一个新的activity的时候,直接在栈顶创建一个新的activity singleTop 顶部单个 在创建一个新的activity的时候 ...

  8. Activity LauchMode启动模式(转载)

    转载于:http://www.cnblogs.com/plokmju/p/android_ActivityLauncherMode.html 在一个Android应用中,不可避免的会包含多个Activ ...

  9. Android开发艺术2之Activity的启动模式

    Activity是Android的四大组件之一,他的重要性毋庸置疑,对于这么重要的一个组件,我们首先要知道这些都是由系统进行管理和回调的,要理解Activity的启动模式,我们首先来了解一下Andro ...

随机推荐

  1. django中外键关联表的查询随笔

    django中,如果一个数据库中的表之间有外键的话可以方便的通过一个表查询到其相关表的数据.如有下面三个model:class Blog(models.Model):    name = models ...

  2. spoj LCS

    初识后缀自动机: 推荐学习:http://blog.sina.com.cn/s/blog_7812e98601012dfv.html #include<cstdio> #include&l ...

  3. 练习-libev和pyev示例

    事件循环,IO复用,还是理解深刻一点好. 比较LIBEV和PYEV,发现PYTHON库只是对LIBEV作了简单的语法转换. 到了这个层次,就一个字:DIAO!!! libev的C版: #include ...

  4. eCos驱动分析 之 ISR是如何与硬件中断联系起来的?

    http://keendawn.blog.163.com/blog/static/8888074320116205833478/

  5. [译]GotW #6b Const-Correctness, Part 2

         const和mutable对于书写安全代码来说是个很有利的工具,坚持使用它们. Problem Guru Question 在下面代码中,在只要合适的情况下,对const进行增加和删除(包括 ...

  6. FORM - 实现某数据项自动按记录序号加一操作

    ---- 设块名为VO,要操作的数据项为VO_ID,在该块中建立块级触发子WHEN-CREATE- RECORD,每当生成新记录时VO_ID就会自动加一了,加入如下代码: :VO_ID:=:Syste ...

  7. hadoop2.2编程:Tool, ToolRunner, GenericOptionsParser, Configuration

    继承关系:   1. java.util Interface Map.Entry<K,V> description: public static interface Map.Entry&l ...

  8. C#面向对象编程实例-猜拳游戏

    1.需求 现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢. 2.需求分析 根据需求,来分析一下对象,可分析出:玩家对象(Player).计算机对象(Comput ...

  9. 终极秘籍教你怎么找回被盗iPhone 查询ICCID

    iPhone不慎丢失后怎么办?普通青年:立刻报警,基本没用.文艺青年:用Find my iPhone查找位置.但那只是个大概位置,iPhone关机后更是没戏,接着是用iCloud锁定手机,发送警告信息 ...

  10. 面试准备--Spring(AOP)

    AOP:面向切面编程,在执行某个指令时,需要添加某个预编译的指令. 下面这个例子是来自网上的: 1.OOP回顾 在介绍AOP之前先来回顾一下大家都比较熟悉的OOP(Object Oriented Pr ...