首页
学习
活动
专区
圈层
工具
发布

Activity启动模式

一、LaunchMode 预备知识:任务栈(回退栈),后进先出 standard(标准模式):默认启动模式,每创建一个新Activity,都会产生一个新的Activity实例并且放入相应的任务栈中。...singleInstance(单实例模式):加强的singleTask模式,除了具有singTask的一切特性外,还加强了一点,就是具有此模式的Activity只能单独的位于一个任务栈中。...两种情况(其他情况没有意义): 当TaskAffinity和singleTask启动模式配对使用的时候:singleTask的activity会运行在TaskAffinity指定名字的任务栈中。...由于启动模式为“singleTask”和 “singleInstance”的Activity只能位于Task的底部,因此,重新宿主只能限于“standard”和“singleTop”模式。...注:在Intent中设置标志位来指定启动模式 比 通过AndroidMenifest.xml为Activity指定启动模式 优先级高。

1.5K20

【Kotlin 协程】协程启动 ④ ( 协程启动模式 | 协程构建器启动模式参数 | DEFAULT 模式 | ATOMIC 模式 | LAZY 模式 | UNDISPATCHED 模式 )

1、DEFAULT 模式 2、ATOMIC 模式 3、LAZY 模式 4、UNDISPATCHED 模式 5、CoroutineStart 中定义的协程启动模式原型 一、协程构建器 CoroutineScope.async...---- 协程启动模式 : DEFAULT 模式 : 默认的 协程启动模式 , 协程创建后 , 马上开始调度执行 , 如果在 执行前或执行时 取消协程 , 则进入 取消响应 状态 ; 1、DEFAULT...模式 DEFAULT 模式 : 默认的 协程启动模式 , 协程创建后 , 马上开始调度执行 , 如果在 执行前或执行时 取消协程 , 则进入 取消响应 状态 ; 如果在执行过程中取消 , 协程也会被取消...; 代码示例 : DEFAULT 模式的协程可以被取消 ; runBlocking { // 调用 runBlocking 函数 , 可以将 主线程 包装成 协程 // 指定协程的启动模式为...函数调用栈 执行协程任务 , 直到遇到第一个挂起函数 , 才在子线程中执行挂起函数 ; 如果在主线程中启动协程 , 则该模式的协程就会直接在主线程中执行 ; 如果在子线程中启动协程 , 则该模式的协程就会直接在子线程中执行

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

    Activity的启动模式

    Activity的四种启动模式 standard:标准模式 标准模式,这也是系统的默认模式。每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。...在这种模式下,谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。...singleTask:栈内复用模式 栈内复用模式,这是一种单实例模式,在这种模式下,只要Activity在一个栈中存在,那么多次启动此Activity都不会创建实例,和singleTop一样,系统也会回调其...Activity的Flags 比较常用的几个Flag FLAG_ACTIVITY_NEW_TASK 这个标记位作用是指定Activity的启动模式为“singleTask”启动模式,其效果和XML中指定该启动模式相同...FLAG_ACTIVITY_SINGLE_TOP 这个标记位作用是指定Activity的启动模式为“singleTop”启动模式,其效果和XML中指定该启动模式相同。

    90340

    activity的启动模式

    activity 点击第二个界面,任务栈里面会加入activity2 再次点击第二个界面,任务栈里面再次加入activity2 当点击返回的时候,最后一个先弹出,依次弹出,这是标准情况下,standard模式...在一些特殊的情况下,为了避免糟糕的用户体验,如果发现任务栈的栈顶存在这个activity了,那么久不重复创建了,这种模式是singleTop的启动模式,单一顶部 清单文件中,activity节点下 设置启动模式...是这个模式,这个activity比较笨重,因为他是用c写的webkit浏览器的内核,当开启多个标签页的时候,其实只是一个activity实例,这样比较节省资源。...singleInstance模式,单一实例,当界面启动开启任务栈以后,点击这个界面,又会创建出来一个单独的任务栈,只存放着这一个activity实例,如果这个activity开启,就会把这个activity...任务栈放在前面,这种模式非常极端,在整个操作系统里面只会有一个实例存在。

    85010

    Activity启动模式解析

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

    65230

    【Android 应用开发】Android 返回堆栈管理 ( 默认启动模式 | 栈顶复用启动模式 | 栈内复用启动模式 | 单实例启动模式 | CLEAR_TOP 标识 )

    默认启动模式 ( standard ) II . 栈顶复用启动模式 ( singleTop ) III . 栈内复用启动模式 ( singleTask ) IV ....默认启动模式 ( standard ) ---- 默认模式 ( standard ) : 最简单的模式 , 每次启动一个 Activity 就创建一个新的 Activity 实例 , 放入返回堆栈中 ;...栈内复用启动模式 ( singleTask ) ---- 独立任务 启动模式 ( singleTask ) : 要跳转到 Activity X ; ① 发现 现有任务的 返回堆栈中存在 Activity...标志位不会启动新的任务 ; 一般情况下 , 在应用中是不适用该启动模式的 , 常用 FLAG_ACTIVITY_CLEAR_TOP 与 默认启动模式 ( standard ) 结合的方式实现 返回堆栈内只有一个...单实例启动模式 ( singleInstance ) ---- 单实例启动模式 ( singleInstance ) : 要跳转到 Activity X ( singleInstance 启动模式 )

    1.1K10

    Android Activity的启动模式

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

    93730

    MySQL的启动原理

    MySQL的启动原理 1 mysql.server、mysqld_safe和mysqld 我们知道mysql.server,mysqld_safe和mysqld都是可以用来启动mysql服务,他们之间是有区别的...下面我们看看这三种启动方法的区别: mysql.server脚本的主要作用就是为了方便启动和关闭mysql服务,mysql.server程序主要会用到两个程序和一个函数,分别是my_print_defaults...不能使用参数选项,即不能mysqld_safe --defaults-file这样的模式,此时只能使用默认的/etc/my.cnf配置文件,如上述代码所示。...mysqld 它是mysql中正常的服务启动方式,一般mysql的初始化和启动都是用mysqld的方法,正常的启动方式为: /usr/local/mysql/bin/mysqld --basedir...,这里描述如下: 首先来看mysql的配置文件调用顺序,当我们启动mysql的时候,有时候系统中包含多个my.cnf配置文件,mysql在启动的时候到底是按照什么顺序来启动的呢,通过下面的命令可以看出来

    2.8K10

    Seata AT 模式启动源码分析

    从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM、TM、TC),接下来我会更新 Seata 源码分析系列文章。...今天就来分析 Seata AT 模式在启动的时候都做了哪些操作。...,参考 Mybatis-spring 也是做了这么一件事情,那么接下来我们来分析一下基于 Spring 的项目启动 Seata 并注册全局事务时都做了哪些工作。...netty 客户端(此时还未真正启动,在对象池被调用时才会被真正启动);开启一个定时任务,定时重新发送 RegisterTMRequest(RM 客户端会发送 RegisterRMRequest)请求尝试连接服务端...没错,以上就是我们使用 API 时经常写的冗余代码,现在 Spring 通过代理模式,把这些冗余代码都封装带模版里面了,它将那些冗余代码统统封装起来统一流程处理,并不需要你显示写出来了,有兴趣的也可以去看看

    85510
    领券