学习
实践
活动
专区
工具
TVP
写文章

Activity启动模式

一、LaunchMode 预备知识:任务栈(回退栈),后进先出 standard(标准模式):默认启动模式,每创建一个新Activity,都会产生一个新的Activity实例并且放入相应的任务栈中。 两种情况(其他情况没有意义): 当TaskAffinity和singleTask启动模式配对使用的时候:singleTask的activity会运行在TaskAffinity指定名字的任务栈中。 一般来说,当Activity启动后,它就与启动它的Task关联,并且在那里耗尽它的整个生命周期。 由于启动模式为“singleTask”和 “singleInstance”的Activity只能位于Task的底部,因此,重新宿主只能限于“standard”和“singleTop”模式。 注:在Intent中设置标志位来指定启动模式 比 通过AndroidMenifest.xml为Activity指定启动模式 优先级高。

58020

ActivityActivity启动模式:SingleTask

概述 总是看到Activity的四种启动模式:Standard,SingleTask,SingleTop,SingleInstance,而且都是借助于官方文档理解的。 但是最近在写Demo测试这几种启动模式的特点与区别的时候,发现与官方文档有不一致的地方。本篇文章主要讲解的是SingleTask这种LaunchMode。 总结 “singleTask”模式启动Activity,在启动时,会先在系统中查找属性值affinity等于它的属性值taskAffinity的任务是否存在:如果存在,则在该任务中启动;如果不存在,则会在新任务中启动 因此,如果想要设置“singleTask”启动模式Activity在新的任务中启动,就要为它设置一个独立的taskAffinity的值。 如果设置了“singleTask”启动模式Activity不是在新的任务中启动的,它会在已有的任务中查看是否已经存在相应的Activity实例,如果存在,会调用该实例的onNewIntent,并且会把位于这个

12620
  • 广告
    关闭

    2023新春采购节

    领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Activity启动模式

    Activity的四种启动模式 standard:标准模式 标准模式,这也是系统的默认模式。每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。 在这种模式下,谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。 Activity的Flags 比较常用的几个Flag FLAG_ACTIVITY_NEW_TASK 这个标记位作用是指定Activity启动模式为“singleTask”启动模式,其效果和XML中指定该启动模式相同 FLAG_ACTIVITY_SINGLE_TOP 这个标记位作用是指定Activity启动模式为“singleTop”启动模式,其效果和XML中指定该启动模式相同。 如果被启动Activity采用standard模式启动,那么连同它之上的Activity都要出栈,系统都会创建新的Activity实例并放入栈顶。

    38840

    activity启动模式

    再次点击第二个界面,任务栈里面再次加入activity2 当点击返回的时候,最后一个先弹出,依次弹出,这是标准情况下,standard模式 在一些特殊的情况下,为了避免糟糕的用户体验,如果发现任务栈的栈顶存在这个 activity了,那么久不重复创建了,这种模式是singleTop的启动模式,单一顶部 清单文件中,activity节点下 设置启动模式android:launchMode=”singleTop” 应用场景 :浏览器的加入书签界面,发短信界面 作用:避免同一个界面被重复的开启 singleTask模式,单一任务栈,通过点击返回键来进行测试这个与singleTop模式的区别 开启一个activity的是,检查任务栈 ,如果已经存在了,那么就清空此activity上面的所有其他界面,复用此界面 应用场景:浏览器应用,查找清单文件看到BrowerActivity是这个模式,这个activity比较笨重,因为他是用c写的 singleInstance模式,单一实例,当界面启动开启任务栈以后,点击这个界面,又会创建出来一个单独的任务栈,只存放着这一个activity实例,如果这个activity开启,就会把这个activity

    27810

    Activity启动模式

    activity启动模式是Android的基础知识,这里就直入主题了。 Activity启动模式 standard模式 standard是activity的默认启动模式,每次activity启动时,都会创建一个新的实例化对象。 ActivityA为standard模式 singleTop模式启动activity之前会检查栈顶activity是否为启动activity实例对象,如果是那么触发activity的onNewIntent ActivityB为singleTop模式 singleTask模式 和singleTop的区别在与,启动activity之前不仅检查栈顶activity是否为启动activity实例对象,而是检查整个堆栈中是否有该 如果有的话,会触发activity的onNewIntent回调并将该实例对象置于栈顶(将他之上的activity销毁) ActivityC为singleTask模式 singleInstance模式

    12210

    Activity启动模式解析

    Activity启动模式 关于Activity的LaunchMode大家一定知道有以下四种: standard(标准模式) singleTop(栈顶复用模式) singleTask(栈内复用模式) singleInsance standard 这个模式我们不用显示指定,因为它是Activity默认的启动模式,例如以下代码就是以standard模式启动的: Intent intent = new Intent(this singleTask 栈内复用模式 这是个单实例模式,我们启动Activity一般会默认创建一个栈,属性于包名相同,这个是我们的默认栈,通过standard启动Activity都会放入这个栈内。 总结 通过上面的对启动模式的讲解,相信大家已经对Activity的栈管理有了一定的认识,我们在实际开发过程中,就可以通过使用启动模式来满足我们特殊的场景,比如我们通过通知栏启动一个Activity,就可以指定为 以后面试官问道关于Activity启动模式,宝宝再也不怕啦。

    22030

    Android Activity启动模式

    standard: 标准(默认)模式 当通过这种模式启动Activity时,Android总会为目标 Activity创建一个新的实例,并将该Activity添加到当前 Task栈中.注意,这种方式不会启动新的 当系统采用singleTask模式加载Activity时,又分为以下 三种情况: (1)如果将要启动Activity不存在,那么系统将会创建该 实例,并将其加入Task栈顶 (2)如果将要启动Activity 已存在,且存在栈顶,那么此时 与singleTop模式的行为相同 (3)如果将要启动Activity存在但是没有位于栈顶,那么 此时系统会把位于该Activity上面的所有其他Activity 全部移出 无论从哪个Task中启动目标Activity,只会 创建一个目标Activity实例且会用一个全新的Task栈来装载该 Activity实例.并且该Task栈有且仅有一个Activity实例 当系统采用 singleInstance模式加载Activity时,又分为以下 两种情况: (1)如果将要启动Activity不存在,那么系统将会先创建一个 全新的Task,再创建目标Activity实例并将该Activity

    34830

    android入门 — Activity启动模式

    1.standard模式   standard模式是系统的默认启动方式,每次激活Activity都会创建Activity,并放在任务栈中。    系统不会在乎活动是否已经存在于返回栈中,每次启动都会创建该活动的一个新的实例。 2.singleTop模式   如果在任务栈顶部正好存在该activity的实例,就重用这个实例,而不会重新创建新的activity对象,不过它会调用onNewIntent()方法。    3.singleTask模式    每次活动启动时系统首先在返回栈中检查是否存在该活动的实例,如果存在,就把这个活动之上的所有活动出栈,如果没有发现活动,就需要创建一个新的activity。 4.singleInstance模式(单例模式)   在这种模式下,会有一个单独的返回栈来管理这个活动,不管哪个应用程序来访问这个活动,都共用一个返回栈。

    52770

    android_activity_启动模式

    standard:标准模式,也是默认模式。每当我们启动一个Activity,系统就会相应的创建一个实例,不管这个实例是否已经存在。 singleTop:栈顶复用模式,如果要启动Activity处于栈的顶部,那么此时系统不会创建新的实例,而是直接打开此页面,同时它的onNewIntent()方法会被执行,可以通过Intent进行传值 singleInstance:单实例模式,该模式具备singleTask模式的所有特性外,与它的区别就是,这种模式下的Activity会单独占用一个Task栈,具有全局唯一性。 以singleInstance模式启动Activity在整个系统中是单例的,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。 启动模式

    9220

    Activity启动模式之FLAG_ACTIVITY_CLEAR_TOP

    关于Android的Intent.FLAG_ACTIVITY_CLEAR_TOP 如果设置,并且这个Activity已经在当前的Task中运行, 因此,不再是重新启动一个这个Activity的实例,而是在这个 如果它的启动模式声明为“multiple”(默认值),并且你没有在这个Intent中设置FLAG_ACTIVITY_SINGLE_TOP 标志那么它将关闭然后重新创建;对于其它的启动模式,或者在这个Intent 中设置FLAG_ACTIVITY_SINGLE_TOP 标志,都将把这个Intent投递到当前这个实例的onNewIntent()中 这个启动模式还可以与FLAG_ACTIVITY_NEW_TASK结合 起来使用用于启动一个Task中的根Activity,它会把那个Task中任何运行的实例 带入前台,然后清除它直到根Activity。 这非常有用,例如,当从Notification Manager处启动一个 Activity

    15730

    Activity启动模式singleTask的理解

    Activity启动模式singleTask的理解 2. Task与Activity栈 3. singleTask设置方式 4. singleTask的意义(作用) 4.1. 举例说明 4.2. Activity启动模式singleTask的理解 2. Task与Activity栈 Task是一些Activity的集合,以Activity栈的形式存放。 ); startActivity(intent); 4. singleTask的意义(作用) 把一个activity启动模式设置为为singleTask,只是意味着framework在启动该 小结 被标记为singleTask的Activity,在启动的时候如果当前没有实例,就和standard模式一样,直接压栈到当前activity上;如果已经有实例了,就把该目标Activity实例上面的 总结 把启动模式设置为singleTask,framework在启动activity时只会把它标示为可在一个新任务中启动,至于是否在一个新任务中启动,还要受其他条件的限制,这个条件就是taskAffinity

    15220

    Activity任务栈和启动模式

    启动一个应用时,Android就会为之创建一个任务桟。先启动Activity压在栈底,后启动Activity放在找顶,通过启动模式可以控制Activity在任务栈中的加载情况。 为了解决任务栈产生的问题,Android为Activity设计了启动模式,那么下面的内容将介绍Android中Activity启动模式。 二、Activity启动模式 在实际开发中,应根据特定的需求为每个Activity指定恰当的启动模式。 01standard模式 standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Activity 使用的都是standard模式。 至此,Activity的4种启动模式已经讲解完成,在实际开发中需要根据实际情况来选择合适的启动模式

    43860

    Activity启动模式完全解读-更新中

    在实际的项目中我们应当根据特定的需求为每个Activity指定恰当的启动模式启动模式分为四种,分别是standard、singleTop、singleTask、singleInstance. 可以在AndroidManifest.xml文件中通过给Activity标签指定android:launchMode属性来选择启动模式。 ---- standard 说明 standard是Activity默认的启动模式,在不进行显示指定的情况下,所有活动都会自动使用standard模式。 Code演示 ---- singleTop 说明 当活动的启动模式指定为singleTop,在启动活动时,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会创建新的活动实例。 Code演示 ---- singleTask 说明 当活动的启动模式为singleTask模式的时候,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把这个活动之上的所有的活动统统出栈

    18030

    细谈Activity四种启动模式

    也就是说在其他情况下,Activity的生命周期可能不会是按照我们以前所知道的流程,这就要说到我们今天的重点了——Activity启动模式:我们的Activity会根据自身不同的启动模式,自身的生命周期方法会进行不同的调用 一、在将启动模式之前必须了解的一些知识: 在正式的介绍Activity启动模式之前,我们首先要了解一些旁边的知识,这些知识如果说模糊不清,那么在讨论启动模式的时候会一头雾水(笔者亲身感悟)。 接下来我们来正式看Activity启动模式: 二、Activity启动模式: 1. 默认启动模式standard: 该模式可以被设定,不在manifest设定时候,Activity的默认模式就是standard。 在该模式下,启动Activity会依照启动顺序被依次压入Task中: ? 上面这张图讲的已经很清楚了,我想应该不用做什么实验来论证了吧,这个是最简单的一个,我们过。 2.

    42110

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 云服务器

      云服务器

      云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券