Activity的启动模式详解

SAP Event Mesh 简介 Get Started with Messaging for Decoupled Communication Step 1: What is the SAP Event Mesh service? SAP Event Mesh 是一种完全托管的服务,用于连接应用程序、服务和系统,以便它们可以通过消息和事件相互交互。 它通过引入中央消息代理取代了传统的点对点通信。 虽然点对点通信适用于在有限数量的发送方和接收方之间共享数据,但可扩展性很快就会成为一个问题。 SAP Event Mesh 解决了这个问题,并确保 阅读详情

1.1Activity为什么要有启动模式?

        首先得理解”栈”这个概念.所谓的任务栈,是一种”先进后出”的栈结构,就好比给弹夹上子弹,先进去的子弹总是在后面打出.一般情况下,启动一个应用,系统就会为之创建一任务栈,用于放置根Activity,我们如果多次启动同一个activity,系统会创建多个实例并依次将他们放入任务栈.此时如果按back键,这些Activity将依次出栈,当任务栈中没有Activity的时候,系统就会回收此任务栈.回到刚才的那个问题,Activity为什么要有启动模式,其实从刚才的例子就能找到答案:如果每次启动同个activity,系统都会重复创建实例,Android在设计的时候也考虑到这个问题,所以提供了启动模式来修改系统的默认行为.

1.2四种启动模式:standard,singleTop,singleTask,singleInstance

  • standard
           标准启动模式,也是系统默认的启动模式.每次启动一个Activity,都会创建一个新的实例,不管在任务栈中是否已存在相同实例,是一种典型的多实例实现.一个任务栈中可以有多个实例,而每个实例也可以属于不同的任务栈,这句话可能听着有点绕,这里举个例子说明下:
          有两个Activity,分别是A,B,B的启动模式是standard,A启动了B,B就会进入A所在的栈中.非Activity类型的Context(如getApplicationContext)调用startActivity会报错,因为该context没有所谓的任务栈,解决这个问题的方法是给这个待启动的Activity指定FLAG_ACTIVITY_NEW_TASK的标记,这样启动的时候就会为他创建一个新的任务栈,其实此时启动Activity是以singleTask模式启动的,这个需要注意下.

  • singleTop
    栈顶复用模式.在此模式下,如果新启动的Activity已位于任务栈的栈顶了,那么此Activity不会被重复创建,同时它的onNewIntent方法将被调用,我们可以在这个方法中获取当前请求的信息,需要注意的是,这个Activity中的onCreate,onStart,onResume方法不会被调用,因为它没有改变.如果新Activity的实例已经存在,但不在栈顶位置,那么新的Activity任会重新创建.

  • singleTask
    栈內复用模式.这是一种单实例模式,只要这个Activity在栈中存在,不管在栈顶还是栈低,多次启动此Activity都不会重新创建实例,和singleTop一样,系统也会调用其onNewIntent方法,举个例子:如果A-Activity的启动模式是singleTask且请求启动,此时系统首先去找A-Activity需要的任务栈,如果存在,再确认该任务栈是否存在A-Activity的实例,如果有,则将A调到栈顶位置并调用A的onNewIntent方法;如果该任务栈中不存在此Activity实例,则重新创建实例;
    如果系统没有找到A-Activity需要的任务栈,则会创建一个任务栈,然后创建A-Activity的实例并放入栈中.需要注意的是singleTask默认具有clearTop的效果,如果A-Activity不位于目标任务栈的栈顶,启动此Activity的时候会将任务栈中A-Activity之上的实例弹栈

  • singleInstance
    单实例模式.这个singleTask的加强版,除了具备singleTask模式的所有特性外,还加强了一点,此种模式的Activity只能单独位于一个任务栈中,不存在其他的实例.例如:A-Activity的启动模式是singleInstance,被启动时,系统会为它创建一个新的任务栈,并创建A的实例,A单独在这个新的任务栈中.由于栈內复用的特性,后续的启动均不会创建新的A-Activity实例,除非这个任务栈被系统销毁.

1.3给Activity指定启动模式的常用方法及区别

常用方法
a.在menifest中配置launchMode属性:android:launchMode=”singleTask”
b. 通过Intent设置标识位:

        Intent intent = new Intent(this, HomeActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_NEW_TASK);
        startActivity(intent)

区别
1.优先级:b>a;
2.限定范围上也有所区别,a无法直接为Activity设置Intent.FLAG_ACTIVITY_CLEAR_TOP,而b方法无法为Activity指定singleInstance模式,

华为OD机试真题2026双机位C卷 C语言 实现【明日之星选举】 给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。 阅读详情

相关推荐

控制台模拟前端请求实现快速刷网课时长

本教程仅用于学习前端技术和网页开发,旨在提供教育与技术指导。对于任何未经授权或违反规定的使用行为,本人不承担任何责任。注意到那个serive后面有timestamp时间戳,暗示它很可能就是每30秒汇报一次进度和播放时长的命令,我们右键——复制——复制为fetch。有的网站上的网课需要的不仅仅是进度,而是时长,所以倍速插件失效,但我们可以使用控制台命令来模拟请求实现快速刷网课时长。尝试修改即可,例如我修改time为800,然后复制粘贴到控制台执行。播放视频,等待前端请求出现,然后复制前端请求为fetch。

m0_74823408的博客 2066

Activity的三种启动方式以及不同Activity之间简单的数据传递

文章目录Activity的三种启动方式显示启动隐式启动startActivityForResult不同Activity之间简单的数据传递传递简单内容传递对象 Activity的三种启动方式 Activity的启动方式分为以下三种: 显示启动 隐式启动 startActiviyForResult 下面是三种的基本用法 显示启动 一般用于启动当前工程内的普通Activity,如: 从当前MainActivity跳转至MainActivity2 //创建意图 //参数1:环境上下文,当前环境(this)

苹果是我咬的的博客 1064

从零开始:在Ubuntu 22.04上配置Isaac Gym Preview 3环境(含常见错误解决方案)

本文提供了在Ubuntu 22.04系统上从零开始配置Isaac Gym Preview 3环境的完整实战指南。内容涵盖NVIDIA驱动安装、Conda环境搭建、CUDA与PyTorch版本精准匹配、Isaac Gym核心安装与验证,并重点介绍了针对四足机器人等复杂系统的强化学习训练环境配置、常见错误解决方案及性能调优技巧,旨在帮助开发者高效部署这一高性能物理仿真平台。

weixin_29048775的博客 392

Activity的四种启动模式

目录一、相关知识二、Activity启动模式:1.默认启动模式——standard2.栈顶复用模式——singleTop3.栈内复用模式——singleTask4.全局唯一模式——singleInstance三、动态设置启动模式 一、相关知识 1.一个应用程序通常会有多个Activity,这些Activity都有一个对应的action(如MainActivity的action),可通过action来启动对应Activity(隐式启动)。 <action android:name="android.in

shiGXW的博客 7069

Halcon: 获取仿射矩形-rectangle2的四个顶点、四条边的中点

Halcon 工业应用实用教程中的一个例子: * CenterY : 仿射矩形中心y * CenterX: 仿射矩形中心x * Phi: 仿射矩形角度 * Len1: 仿射矩形宽的一半 * Len2: 仿射矩形高的一半 * CornerY: 仿射矩形端点y * CornerX: 仿射矩形端点x * LineCenterY: 仿射矩形边中点y * LineCenterx: 仿射矩形边中点x * 矩...

ruotianxia的博客 8572

ICLR 2022)ODConv:即插即用的动态卷积 (附代码)

一定程度上讲,ODConv可以视作CondConv的延续,将CondConv中一个维度上的动态特性进行了扩展,同时了考虑了空域、输入通道、输出通道等维度上的动态性,故称之为全维度动态卷积。ODConv是一种动态卷积算法,它的原理是在卷积过程中,根据输入数据的特征动态地调整卷积核的形状和大小,以适应不同的输入数据。具体来说,ODConv通过引入一个可学习的形变模块,根据输入数据的特征动态地调整卷积核的形状和大小,从而提高了卷积神经网络的性能。此外,相比常规卷积,动态卷积的卷积核参数往往是其n倍。

PLANTTHESON的博客 2万+

activity的启动模式有哪些?是什么含义?(一)

Activity的四种启动模式如下:standard、singleTop、singleTask、

JAVA技术博客 3734

【教程4>第1章>第11节】使用MATLAB快速产生批量verilog语句加快FPGA开发

...........如果手动写,那么就非常麻烦,这个时候,我们借助matlab,则可以快速生成上述类型的verilog程序,我们编写如下的MATLAB语句。\n");\n");end。

FPGA/MATLAB学习教程/源码/项目合作开发 1241

Activity的几种启动模式

1.我们可以先讲讲从应用启动涉及到的activity堆栈流程以及四种启动模式概念(standard,singleTop,singleTask,singleInstance) 一个应用由多个Activity构成,多个Activity构成了任务,系统以栈方式进行管理任务(也就是管理多个Activity),管理方式为“先进后出”。 默认情况下,当用户点击App图标后,启动应用,这时会创建一个任务栈,并且将MainActivity压入栈中,作为栈底Activity.之后每启动一个Activity,就会将这个Ac

qq_27077899的博客 266

【49】软考软件设计师——冲刺复盘:高频易错点与应试策略|复盘清单+应试技巧

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第49篇,属于**模块六:冲刺与模拟**终篇,聚焦考前最后阶段的“精准复盘+应试提分”。全文围绕“高频易错点清零、答题时间优化、应急处理落地”三大核心,梳理9大知识领域的典型易错点(附避坑技巧)、优化版答题时间分配(含取舍策略)、考中全场景应急方案,配套可直接使用的“复盘清单”和“应试技巧手册”,帮助考生在最后阶段查漏补缺、固化得分逻辑,避免因低级错误丢分,以“稳、准、快”的状态应对考试。下一篇第50篇(终章)将进行全专栏知识体系回顾、考试策略总结

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 440

C# 从数秒到毫秒:MySQL+Redis百万数据优化实战全解析

在处理百万级数据时,传统单体数据库常面临查询效率低下、数据库负载过高和用户体验差等问题。为解决这些性能瓶颈,可以采用MySQL分库分表、Redis缓存和异步统计的组合策略。 数据库分片:通过水平分表和分库实现,将单表数据分散到多个物理表或数据库实例中,降低单点负载。 Redis缓存:利用Redis缓存高频数据,减少数据库查询压力,提升响应速度。 异步统计:通过消息队列(如RabbitMQ)解耦统计任务,后台处理非实时任务,避免阻塞主流程。 这些优化策略能够显著提升系统性能,确保在高并发和大数据量场景下的稳定

墨夶的博客 852

Activity的四种启动模式讲解

首先说一下Activity为什么需要启动模式。我们知道,在默认情况下,当我们多次启动同一个Activity的时候,系统会创建多个实例并把它们一一放入任务栈中,当我们按BACK键时,会发现这些Activity会一一回退。任务栈是一种“后进先出”的栈结构,这个较好理解,每按一下Back键就会有一个Activity出栈,直到栈为空为止,当栈中无任何Activity时,系统就会自动回收这个任务栈。知道了Ac

淮左明都的博客 428

Vue和Vue-Element-Admin(六):集成中的CORS(跨域资源共享)问题

在vue-element-admin登录集成时候碰到跨域资源共享问题,CORS(Cross-origin resource sharing)是浏览器的技术规范,浏览器可以发起跨域请求但Javascript脚本不能,传统的ajax只能获取在同域名下的资源,但Html5允许ajax发起跨域请求,解决方案有:JSONP、Flash、IFrame、CORS。 一、CORS(跨域资源共享)问题 针对vue-element-admin的登录模块的后端接口完成后,前端调用时候出现报错,因为前端的端口是9527而后.

叶子叶来 9615

Activity启动模式详解

Activity 的启动模式详解Activity四种启动模式:1.standard : activity默认的启动,也是activity的标准模式.通俗的讲,就是你每start气动一个activity都会创建一个activity的实例,并假如返回栈中,并且不管这个实例是否存在. 在这种模式下,一个任务栈可以有多个activity的实例,每一个activity的多个实例也可以处于不同的任务栈中.并且在

aa671125的专栏 685

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

详解Activity的四种启动模式

详解Activity的四种启动模式Activity之间的跳转Activity的启动模式standard 系统默认的启动模式 ——栈的结构先进后singleTop——顶部复用模式singleTask——只有一个singleInstance——单例模式【具有独占性】测试结果standard Activity之间的跳转 【先进后出 Stack】 Activity的启动模式 设置方法1 设置方法2 ...

qq_37687466的博客 550

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android Activity 启动模式详解

最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了解深刻一点。度娘的时候 就可以找得到不需要在 问人了。如果不了解的话,简单的几句也说不清晰。     Activity 四种启动模式,分别为:standard 、singleTop、singleTa

chonbj的专栏 9143

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android Activity启动模式详解

上一篇《Activity启动模式之详解ActivityRecord、TaskRecord、ActivityStack》记录了深入理解启动模式所需要的一系列相关类和名词,如果有需要可以先去看看https://blog.youkuaiyun.com/luzaiyy611/article/details/99259950。 本篇尽量使用简洁的语言讲解Activity的四种启动模式以及一些需要注意的点以...

luzaiyy611的博客 277

详解Activity4种启动模式

三,Activity的启动模式 Intent的标志位FLAG: 1,Intent.FLAG_ACTIVITY_SINGLE_TOP 与加载模式singleTop功能相同 2, Intent.FLAG_ACTIVITY_CLEAR_TOP 如果已经启动了四个Activity:A,B,C和D。在D Activity里,我们要跳到B Activity,同时...

qq_38859786的博客 1133

Android开发Activity启动模式详解

本文详解Android开发Activity启动模式

qq_30725967的博客 1367

activity启动模式详解

activity为啥要设立启动模式这个机制呢?因为在默认情况下,我们每启动一个activity,不管其同样的实例存不存在,都将创建一个新的实例。这样非常没有效率,所以出现了启动模式这个东西,可以让我们修改activity的启动行为。启动模式列举: standard:系统默认模式。每启动一个activity,不管其实例存不存在,都将创建一个新的实例,一个任务栈中可以存在多个同样的实例。这样的情况下,

zhangconglin的博客 458
上一篇: Activity生命周期分析
下一篇: Android IPC 通信机制
Alrict
博客等级 码龄10年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值