Android启动模式详解

安卓activity(活动)启动模式详解 启动模式简介: 1、standard 标准模式,也是默认模式,如果launchMode不设置的话,默认是此模式,每次启动都会创建一个实例,比如a-a-a-a,活动a启动活动a,按返回键的话是a-a-a-a,有4个a活动实例。 2、singleTop 栈顶复用模式,如果启动的活动已经处于栈顶,则不会创建新的实例,而是复用栈顶活动,比如a-a-a-a,按返回键的话会直接退... 阅读详情

Android启动模式详解

  • standard
    默认模式。在该模式下,Activity可以拥有多个实例,并且这些实例既可以位于同一个task,也可以位于不同的task。每次都会新创建。
  • singleTop
    该模式下,在同一个task中,如果存在该Activity的实例,并且该Activity实例位于栈顶则不会创建该Activity的示例,而仅仅只是调用Activity的onNewIntent()。否则的话,则新建该Activity的实例,并将其置于栈顶。
  • singleTask
    顾名思义,只容许有一个包含该Activity实例的task存在!
    在android浏览器browser中,BrowserActivity的launcherMode="singleTask",因为browser不断地启动自己,所以要求这个栈中保持只能有一个自己的实例,browser上网的时候,
    遇到播放视频的链接,就会通过隐式intent方式跳转找Gallery3D中的MovieView这个类来播放视频,这时候如果你点击home键,再点击browser,你会发现MovieView这个类已经销毁不存在了,
    而不会像保存这个MovieView的类对象,给客户带来的用户体验特别的不好。就像别人总结的singleTask模式的Activity不管是位于栈顶还是栈底,再次运行这个Activity时,都会destory掉它上面的Activity来保证整个栈中只有一个自己。
    下面是官方文档中的介绍:
    The system creates a new task and instantiates the activity at the root of the new task. However, if an instance of the activity already exists in a separate task, the system routes the intent to the existing
    instance through a call to its onNewIntent() method, rather than creating a new instance. Only one instance of the activity can exist at a time.

    以singleTask方式启动的Activity,全局只有唯一个实例存在,因此,当我们第一次启动这个Activity时,系统便会创建一个新的任务栈,并且初始化一个Activity实例,放在新任务栈的底部,如果下次再启动这个Activity时,
    系统发现已经存在这样的Activity实例,就会调用这个Activity实例的onNewIntent方法,从而把它激活起来。从这句话就可以推断出,以singleTask方式启动的Activity总是属于一个任务栈的根Activity。
    下面我们看一下示例图: 
    image
    坑爹啊!有木有!前面刚说singleTask会在新的任务中运行,并且位于任务堆栈的底部,这里在Task B中,一个赤裸裸的带着singleTask标签的箭头无情地指向Task B堆栈顶端的Activity Y,什么鬼?
    这其实是和taskAffinity有关,在将要启动时,系统会根据要启动的Activity的taskAffinity属性值在系统中查找这样的一个Task:Task的affinity属性值与即将要启动的Activity的taskAffinity属性值一致。如果存在,
    就返回这个Task堆栈顶端的Activity回去,不重新创建任务栈了,再去启动另外一个singletask的activity时就会在跟它有相同taskAffinity的任务中启动,并且位于这个任务的堆栈顶端,于是,前面那个图中,
    就会出现一个带着singleTask标签的箭头指向一个任务堆栈顶端的Activity Y了。在上面的AndroidManifest.xml文件中,没有配置MainActivity和SubActivity的taskAffinity属性,
    于是它们的taskAffinity属性值就默认为父标签application的taskAffinity属性值,这里,标签application的taskAffinity也没有配置,于是它们就默认为包名。
    总的来说:singleTask的结论与android:taskAffinity相关:  
    • 设置了singleTask启动模式的Activity,它在启动的时候,会先在系统中查找属性值affinity等于它的属性值taskAffinity的任务栈的存在;如果存在这样的任务栈,它就会在这个任务栈中启动,否则就会在新任务栈中启动。
      因此,如果我们想要设置了singleTask启动模式的Activity在新的任务栈中启动,就要为它设置一个独立的taskAffinity属性值。以A启动B来说当A和B的taskAffinity相同时:第一次创建B的实例时,并不会启动新的task,
      而是直接将B添加到A所在的task;否则,将B所在task中位于B之上的全部Activity都删除,然后跳转到B中。
    • 如果设置了singleTask启动模式的Activity不是在新的任务中启动时,它会在已有的任务中查看是否已经存在相应的Activity实例,如果存在,就会把位于这个Activity实例上面的Activity全部结束掉,
      即最终这个Activity实例会位于任务的堆栈顶端中。以A启动B来说,当A和B的taskAffinity不同时:第一次创建B的实例时,会启动新的task,然后将B添加到新建的task中;否则,将B所在task中位于B之上的全部Activity都删除,然后跳转到B中。
  • singleInstance
    顾名思义,是单一实例的意思,即任意时刻只允许存在唯一的Activity实例,而且该Activity所在的task不能容纳除该Activity之外的其他Activity实例!
    它与singleTask有相同之处,也有不同之处。
    相同之处:任意时刻,最多只允许存在一个实例。
    不同之处:
    • singleTask受android:taskAffinity属性的影响,而singleInstance不受android:taskAffinity的影响。
    • singleTask所在的task中能有其它的Activity,而singleInstance的task中不能有其他Activity。
    • 当跳转到singleTask类型的Activity,并且该Activity实例已经存在时,会删除该Activity所在task中位于该Activity之上的全部Activity实例;而跳转到singleInstance类型的Activity,并且该Activity已经存在时,
      不需要删除其他Activity,因为它所在的task只有该Activity唯一一个Activity实例。

更多文章请查看AndroidNote

你的star是我的动力!!!

NX二次开发编译时dll自动数字签名及拷贝 在UG5.0开始,所有基于UG二次开发的DLL都要“签名”后才能被客户端上正版的NX调用。 阅读详情

相关推荐

SAP-PP 返工订单成本归集优化:从物料结算到成本中心的配置与增强实践

本文深入探讨SAP-PP模块中返工订单成本归集的优化方案,重点解析从物料结算到成本中心的配置与增强实践。通过结算参数文件配置、分配结构调整及增强开发实战,解决返工费用误计入物料成本的问题,确保财务核算精准性。文章还提供测试验证方案与常见报错处理技巧,助力企业实现成本数据清晰流向分析。

weixin_29260291的博客 366

简单说说安卓的四种启动模式

安卓应用开发之启动模式

陈尘的博客栈 594

即梦 AI 全功能零基础详细教程(纯技术版)

即梦 AI 是一款多模态 AI 生成工具,主打文本生成视频、图片生成视频、角色一致性生成、音画同步等核心功能,依托自研 AI 视觉模型,实现从文本 / 图片 / 音频素材输入,到高清视频、图像内容输出的全流程 AI 创作,支持短视频、短剧、创意素材等多场景创作,具备操作门槛低、生成效率高、画面可控性强的技术特点。@为工具内置引用指令,作用是锁定指定素材 / 角色,强制 AI 按照该素材的核心特征生成内容,无额外付费、解锁要求,免费使用。剧本拆分:将短剧拆分为单镜头(15 秒内 / 个)

2501_92061023的博客 5865

Android的四种启动模式

Android的四种启动模式

weixin_44715716的博客 9017

使用QGIS提取天地图遥感影像中的建筑物轮廓,及AI方案

用QGIS的插件提取遥感影像中的建筑轮廓,并提供了几个AI提取建筑轮廓的方案。

cky_123的博客 2万+

把群晖NAS变成游戏开发服务器:Perforce与虚幻引擎深度整合的5个关键配置(含.p4ignore模板)

本文详细介绍了如何将群晖NAS配置为游戏开发服务器,重点讲解了Perforce与虚幻引擎的深度整合。通过五个关键配置节点,包括用户权限架构、Workspace策略、资产同步优化、仓库清洁度保障和编辑器深度集成,帮助小型团队打造高效开发环境。文章还提供了实用的.p4ignore模板和优化技巧,显著提升开发效率。

weixin_30430677的博客 319

Android ---【基础篇】图解四种启动模式及实际应用场景解说

而一般onCreate方法中会进行该页面的数据初始化、UI初始化,假设页面的展示数据无关页面跳转传递的參数,则不必操心此问题,若页面展示的数据就是通过getInten() 方法来获取,那么问题就会出现:getInten()获取的一直都是老数据,根本无法接收跳转时传送的新数据!系统会为它创建一个单独的任务栈,由于栈内复用的特性。假设你在当前的Activity中又要启动同类型的Activity,此时建议将此类型Activity的启动模式指定为SingleTop,能够降低Activity的创建,节省内存!

梁同学与Android 4593

ABB机器人常见的几大数据类型

ABB机器人数据存储描述了机器人控制器内部的各项属性,ABB机器人控制器数据类型多达100余种,其中常见的数据类型包括基本数据、i/o数据、运动相关数据。 1、基本数据 基本数据: bool 逻辑值:逻辑状态下赋予的真或者假。逻辑值有两种情况:成立和不成立则逻辑值为真使用true或1表示不成立则逻辑值为假使用false或0表示 byte 字节值:用于计量存储容量的一种计量单位,取值范围为(0-255) num 数值:变量、可存储整数或小数整数取值范围(-8388607~8388608) dnum

soinlove36的专栏 1万+

193.Android四种启动模式

standard 模式对于大多数普通页面足够简单直接;singleTop 模式能够在频繁重复启动同一页面时避免资源浪费,并及时刷新界面;singleTask 模式适合需要全局唯一性、确保多入口归一的关键页面;singleInstance 模式提供完全独立的运行环境,适用于特定业务场景。若不需要额外的状态维护,standard 足够应付常规页面跳转;若目标页面数据需要更新且防止重复创建,则 singleTop 是不错的选择;若需要在全局范围内保证页面唯一性,singleTask 能方便管理;

2303_79132118的博客 3103

ESD防护设计宝典(十一):CE(传导发射)超标问题排查与解决

(Conducted Emission, CE),亦称为传导骚扰,是电子电气设备或系统内部的电压、电流通过信号线、电源线或地线向外传输,对其他电子电气设备或系统造成电磁干扰的物理现象。其。

m0_56451176的博客 857

lp–mspm0g3507开发板进入低功耗模式怎么退出?烧程序烧着烧着就进来了,跳线帽没动过,且报错:Texas Instruments Debugger Error: DAP Co...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1571

android四种启动模式

说明:Android创建Activity时的默认模式,假设没有为Activity设置启动模式的话,默觉得标准模式。每次启动一个Activity都会又一次创建一个新的实例入栈,无论这个实例是否存在。生命周期:如上所看到的,每次被创建的实例Activity 的生命周期符合典型情况,它的onCreate、onStart、onResume都会被调用。一句话:只要点击某个类就会生成新的实例(占内存)

zxz_zxz_zxz的博客 1183

YOLO11涨点优化:SPPF原创自研创新 | SPPF创新结构,重新设计全局平均池化层和全局最大池化层,增强全局视角信息和不同尺度大小的特征

SPPF_improve利用全局平均池化层和全局最大池化层,加入一些全局背景信息和边缘信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1870

Android安卓-四大启动模式是什么?启动模式详解,场景运用。

转自 “逆水当行舟” 的博客,收藏记录。 启动模式 启动模式是什么 有这样的场景: 当我们使用App的时候,呈现出一个Activity,按下返回键(不考虑重写返回键事件),常常就回退到上一个打开的Activity或者退出App。 //重写返回按键事件public bo

ruiruiddd的博客 980

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WINCC7.3破解文件

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

Android 启动模式详解

Android 启动模式详解android中有四种启动模式 标准启动模式 栈顶模式 singleTop 栈内模式 singleTask 单例模式 singleIntance11 什么是标准启动模式 标准启动模式的含义是:每次启动一个activity实例对象,并放入到栈内,并以后进先出的规则.栈顶模式 栈顶模式的含义是:每次启动activity的时候,会先去栈里查找,如果栈顶的activity与要

饭糕的博客 520

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android四大启动模式详解

Android的Activity是四大组件之一,除了Activity的生命周期外,Activity的启动模式也是非常重要的。为了了解Activity的启动模式,首先我们要知道我们为什么要使用启动模式?启动模式存在的意义是什么? 我们知道,在默认情况下,当我们多次启动同一个Activity的时候,系统会创建多个实例,并把它们一一放入任务栈中,当我们点击back键时,会发现这些Activity会一一回

怜星的博客 950

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android LaunchMode启动模式详解

那为啥需要启动模式呢?对,需求是所有东西被建立或者被制造出来的原因,因为我们对Actiivty有不同的需求,举个老生常谈的发邮件例子,邮件主页Activity要求不论怎么打开,打开多少次,就只能有一个主页Activity的实例,对吧,如果有多个实例我们就很麻烦,不知道显示哪个,也不知道要关闭哪个,那这就是个需求,对应这个需求,我们就需要对这个主页Activity设置一种启动模式,不论怎么打开就只有一个实例,这样需求就满足啦。顾名思义,LaunchMode就是启动模式,啥是启动模式?

qq_38056514的博客 3770

android的四种启动模式详解

launchMode说起这个就想起来当初面试的时候,面试官问我安卓的四种启动模式,然后我就大概讲了讲,其实都是背诵的,也没有真正的理解这些启动模式在android中的实际意义,用处在那些地方今天我就或多或少的讲一下自己的理解1、standard 模式 我们正常没有设置启动模式的时候,android的启动模式默认为standard这样的启动模式就是正常启动,启动的所有的activity都在一个task

songdongpan优快云的博客 830

【Android】Activity的启动模式详解

Android五大Activity启动模式:standard(默认新建实例)、singleTop(栈顶复用)、singleTask(全局栈内唯一)、singleInstance(独占独立栈)和singleInstancePerTask(多窗口适配)

阿华的博客 1557

Android中Activity启动模式详解

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。   Android总Activity的启动模式分为四种: Activity启动模式设置: ".MainActivity" android:launchMode="stan

幻影 1387

Android Activity启动模式详解

zzz~ Activity 是 Android 中重要的一部分 下面我们来了解下 Activity 的四个启动模式 标准模式(Standard) 栈顶复用模式(SingleTop) 栈内复用模式(SingleTask) 单例模式(SingleInstance) 我们都知道 Android 是通过堆栈的方式 管理的 每加载一个新的 Activity 就会添加到 当前堆栈的顶部 , 以此类推 每...

a836586387的博客 341

Android开发Activity启动模式详解

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

qq_30725967的博客 1367

android的四种启动模式,Activity的四种启动模式详解

Activity的启动模式1. 启动模式的类别标准模式(standard)栈顶复用模式(singleTop)栈内复用模式(singleTask)单例模式(singleInstance)2. 任务栈任务栈Task,是一种用来放置Activity实例的容器,他是以栈的形式进行盛放,也就是所谓的先进后出,主要有2个基本操作:压栈和出栈,其所存放的Activity是不支持重新排序的,只能根据压栈和出栈操作...

weixin_42502957的博客 413

Android task启动模式,Android 启动模式和 taskAffinity 属性详解

任务和返回栈应用通常包含多个 Activity ,每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Activity,一个 Activity 可以启动设备上其他应用中的 Activity,即使两个 Activity 可能来自不同的应用,但是 Android 仍会将 Activity 保留在相同的任务中,以维护这种无缝的用户体验。这里所说的任务就是指在执行特定作业时与用户...

weixin_39534121的博客 454

Android Activity 启动模式详解

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

chonbj的专栏 9143

Android中Activity的四种启动模式详解

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。   Android总Activity的启动模式分为四种: Activity启动模式设置: ".MainActivity" android:launchMode="stan

跟踪世界脚步 273
上一篇: ConstraintLayout简介
下一篇: Android开发中的MVP模式详解
CharonChui
博客等级 码龄12年 66粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值