首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ActivityActivity启动模式:SingleTask

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

66520

Activity启动模式

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

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

activity启动模式

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

48510

Activity启动模式

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

35610

Activity启动模式

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

97620

Android Activity启动模式

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

54930

Activity启动模式解析

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

38830

Activity启动模式singleTask理解

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

33920

android_activity_启动模式

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

19420

android入门 — Activity启动模式

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

67870

Activity四种启动模式

Activity有四种启动模式 1、standard 2、singleTop 3、singleTask 4、singleInstance standard标准模式 1、standard是Activity...默认启动模式,在不指定Activity启动模式情况下,所有Activity使用都是standard模式在standard模式下,每当启动一个新Activity,他就会进入任务栈,并处于栈顶位置..., 2、对于使用standard模式Activity每次启动都会创建一个新实例 3、适用于绝大数应用场景 singleTop模式 singleTop启动模式与standard类似,不同是,当启动...singleTask模式 1、当Activity启动模式为singleTask时,每次启动Activity时,系统会首先会检查栈中是否存在该Activity实例,如果发现已经存在则直接使用该实例,并将当前...采用这种模式启动会分为一下两种情况 第一种:如果要启动Activity不存在,系统会先创建一个新任务栈,在创建该Activity实例,并把Activity加入栈顶,如图所示 第二种如果启动Activity

1.7K30

Activity启动模式之FLAG_ACTIVITY_CLEAR_TOP

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

58830

Activity任务栈和启动模式

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

74360

你真的了解Activity启动模式吗?

定义启动模式 定义Activity启动模式其实就是定义一个Activity新实例如何(是否)与当前任务做关联。以什么样方式进入到当前(或其他)任务中。...lauchMode属性来指定当前这个activity启动模式。...如果我们希望某个activity大多数情况下正常启动,而少数情况下执行特殊启动模式,我们就可以在需要执行特殊启动模式时在Intent中添加标志声明。...standard:标准模式 默认启动模式启动activity时直接创建新实例并压入启动任务栈顶。...singleTop:栈顶复用模式模式唯一与standard不同就是,如果启动singleTop模式activity时发现当前任务栈顶已经存在着这个activity实例,那么就不会创建新实例

56640

Android Activity四种启动模式

前言 记得第一次探讨Activity启动模式,是在2017年8月份,那个时候对一年后走出校门未来很是憧憬,时间真快,已经毕业四个月,工作和生活也都趋于稳定。...二、Activity启动模式简介 Activity有四种启动模式,standard、singleTop、singleTask、singleInstance,默认启动模式是standard  2.1 standard...当Activity全部退出时,系统会自动回收这个空栈。 2.2 singleTop模式 改变Activity启动模式,可以在配置文件中为Activity添加lauchMode属性 ?...singleTop模式为栈顶复用模式,通俗说,就是如果栈顶Activity启动Activity是同一个,那么就直接复用,比如还是在ActivityA中跳转到ActivityB,我们将ActivityB...2.3 singleTask 模式 singleTask是栈内复用模式,在这里栈内复用要区分要启动Activity所需栈是否是当前栈 2.3.1 是当前栈 比如现在有ActivityA 启动模式为singleTask

65820
领券