Android的四种加载模式

Android:史上最生动形象的解析andriod activity的四种启动模式(standard, singletop,singletask,singleinstance) 文章目录 套用连连看规则 Activity的四种启动模式 模式一:standard 模式二:singletop 模式三:singletask 模式四:singleinstance 你还需要知道这些 1.“相同”的含义与taskAffinity属性 2.“消除”的含义 3. 注意:栈顶的重复activity并没有创建出来。而图例中为了形象的表达,将重复的activity表现出来了。 阅读详情

Android的四种加载模式:

 

首先在配置Activity时即可指定该Activity用哪种加载模式,通过android:launchMode属性。

 

四种加载模式:

standard:标准模式,默认

singleTop:Task顶单例模式

singleTask:Task内单例模式

singleInstance:全局单例模式

 

Android是通过Task对Activity进行管理的,通过getTaskID()方法可以获得当前活动的Task的ID。

可以把Task理解成Activity栈,Task以栈的形式来管理Activity。

 

 

下面是四种模式:

1.standard模式

每次通过这种模式来启动目标Activity时,Android会为目标Activity创建一个新的实例,并将干Activity添加到当前Task栈中----这种模式不会启动新的Task,新Activity将被添加到原有的Task中。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		LinearLayout layout = new LinearLayout(MainActivity.this);
		layout.setOrientation(1);
		setContentView(layout);

		TextView textView = new TextView(MainActivity.this);
		textView.setText("ACtivity为  :" + this.toString() + "\n" + ",Task Id为:"
				+ this.getTaskId());

		Button button = new Button(this);
		button.setText("启动Main");
		layout.addView(textView);
		layout.addView(button);

		button.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		Intent intent = new Intent(MainActivity.this, MainActivity.class);
		startActivity(intent);
	}
}






多次点击按钮,程序会不断的启动当前活动,活动的hashCode变化,但是TaskId总是一样的,这就表明这种加载模式不会启动新的Task。

当按返回键的时候,启动的活动会逐一从栈顶删除。




2.singleTop

这种模式与标准模式基本相似,但是有一点不同:当将要被启动的目标Activity已经位于栈顶时,系统不会重新创建目标Activity实例,而是直接复用已有的Activity实例。

将上例中的launchmode改为singleTop,无论用户点击多少次按钮,界面上的程序不会有任何变化。

如果说要被启动的目标Activity没有位于Task栈顶,此时系统会重新创建目标Activity实例,并将它加载到Task的栈顶----此时与标准模式完全相同。



3.singleTask


采用这种加载模式的Activity在同一个Task内只有一个实例,启用目标Activity时,有下面三种情况:

1.如果将要启动的活动不存在,则创建,放入栈顶

2.如果目标Activity已经存在于栈顶,则与singleTop一样

3.如果目标Activity已存在,但是不是位于栈顶,系统会将目标活动前的活动移出Task栈,使得目标Activity位于栈顶

 

演示说明第三种情况:

 

程序中有两个活动,活动中都有一个TextView和一个Button,TextView用来显示活动的hashCode以及TaskID,Button用来启动不同的活动。

当按下第一个活动中的按钮时会启动第二个活动,当按下第二个活动中的按钮的时候会启动第一个活动。








1表示活动1以及它的加载模式

2表示活动2以及它的加载模式

这就是运行截图与示意图。

首先先创建并启动的是1,再创建启动2,再创建启动1,再启动2,已经有2了,不会创建,所以便把2之前的1移出栈,使得2位于栈顶。

如果在接着启动1的话,这个1会再进行创建,已经不是原来的活动1了。

应该可以充分的说明上述第三种情况。



4.singleInstance



再这种加载模式下,系统保证无论从哪个Task中启动目标活动,只会创建一个目标活动实例,并会使用一个全新的Task栈来装载该活动实例

当系统采用该模式启动目标活动的时候,有以下两种情况:

1.如果将要启动的活动不存在,则先创建一个Task,再创建目标活动,加入栈顶

2.如果目标活动已经存在,无论它在哪个应用程序中,无论在哪个Task中,系统会把还Activity所在的Task栈转到前台,从而使用该Activity显示出来

采用singleInstance加载模式加载Activity总是位于Task栈顶,因为Task栈中只有一个Activity。

 

将上例中的两个活动的加载模式都改为singleInstance。









多次点击按钮,程序会不断的启动当前活动,活动的hashCode变化,但是TaskId总是一样的,这就表明这种加载模式不会启动新的Task。

当按返回键的时候,启动的活动会逐一从栈顶删除。




2.singleTop

这种模式与标准模式基本相似,但是有一点不同:当将要被启动的目标Activity已经位于栈顶时,系统不会重新创建目标Activity实例,而是直接复用已有的Activity实例。

将上例中的launchmode改为singleTop,无论用户点击多少次按钮,界面上的程序不会有任何变化。

如果说要被启动的目标Activity没有位于Task栈顶,此时系统会重新创建目标Activity实例,并将它加载到Task的栈顶----此时与标准模式完全相同。



3.singleTask


采用这种加载模式的Activity在同一个Task内只有一个实例,启用目标Activity时,有下面三种情况:

1.如果将要启动的活动不存在,则创建,放入栈顶

2.如果目标Activity已经存在于栈顶,则与singleTop一样

3.如果目标Activity已存在,但是不是位于栈顶,系统会将目标活动前的活动移出Task栈,使得目标Activity位于栈顶

 

演示说明第三种情况:

 

程序中有两个活动,活动中都有一个TextView和一个Button,TextView用来显示活动的hashCode以及TaskID,Button用来启动不同的活动。

当按下第一个活动中的按钮时会启动第二个活动,当按下第二个活动中的按钮的时候会启动第一个活动。








1表示活动1以及它的加载模式

2表示活动2以及它的加载模式

这就是运行截图与示意图。

首先先创建并启动的是1,再创建启动2,再创建启动1,再启动2,已经有2了,不会创建,所以便把2之前的1移出栈,使得2位于栈顶。

如果在接着启动1的话,这个1会再进行创建,已经不是原来的活动1了。

应该可以充分的说明上述第三种情况。



4.singleInstance



再这种加载模式下,系统保证无论从哪个Task中启动目标活动,只会创建一个目标活动实例,并会使用一个全新的Task栈来装载该活动实例

当系统采用该模式启动目标活动的时候,有以下两种情况:

1.如果将要启动的活动不存在,则先创建一个Task,再创建目标活动,加入栈顶

2.如果目标活动已经存在,无论它在哪个应用程序中,无论在哪个Task中,系统会把还Activity所在的Task栈转到前台,从而使用该Activity显示出来

采用singleInstance加载模式加载Activity总是位于Task栈顶,因为Task栈中只有一个Activity。

 

将上例中的两个活动的加载模式都改为singleInstance。





同花顺PC端逆向解析:Hook注入与加密破解实战指南 在Windows客户端数据采集场景中,当常规HTTP爬虫失效时,内存级逆向分析成为获取实时行情数据的关键路径。其核心涉及进程注入、运行时解密、反调试绕过等底层技术,本质是理解PE加载机制、函数调用约定与内存保护策略的协同过程。同花顺作为典型加固客户端,采用ASPack加壳+自研解密+多线程校验三重防护,迫使开发者转向APC注入、动态密钥提取与XXTEA算法复刻等高阶手段。本文聚焦于DLL注入选型依据、解密函数定位方法及二进制Blob结构化解析,最终实现从内存读取到Pandas DataFrame的端到端数据 阅读详情

相关推荐

面试题-手撕NMS(非极大值抑制)

非极大值抑制(Non-Maximum Suppression,NMS)是一种常用于目标检测和计算机视觉中的算法,用于去除重叠的边界框,保留最可能是真实目标的边界框。其核心就是对一组检测框,找出其中属于同一个类别且分数最高的那个框,然后把和这个框的IOU值大于阈值的那些框都删掉。

zhaoyqcsdn的博客 1108

Activity的启动模式之singleInstance模式

activity会启动一个新的任务栈来管理这个activity,singleInstance模式加载activity时,无聊从哪个任务栈中启动该activity,只会创建一个activity实例,并且会使用一个全新的任务栈来装载该activity实例 与singleTask区别:单独为该activity启动了一个新的任务栈来管理 点击第一个按钮 点击第二个按钮 ...

qq601517284的博客 9582

单细胞数据pseudobulks差异分析实战:从聚合到DESeq2

本文详细介绍了单细胞转录组数据分析中pseudobulks(伪散装)方法的实战流程。通过将同一样本的同类型细胞表达值聚合,模拟Bulk RNA-seq数据,再利用DESeq2进行稳健的差异基因分析。该方法有效降低了单细胞数据的技术噪音,特别适用于样本量有限但追求结果稳定性的研究场景,并提供了完整的R代码实现与结果解读指南。

sea99的博客 760

singleinstance 详解

这种启动模式比较特殊,因为它会启用一个新的栈结构,将Acitvity放置于这个新的栈结构中,并保证不再有其他Activity实例进入。 新建2个activity,FirstActivity,SecondActivity,由FirstActivity跳转到SecondActivity,然后在SecondActivity加点击事件又回到FirstActivity。 我们修改FirstAct

u010897392的专栏 1万+

BEV感知技术全景解析:从纯视觉到多传感器融合的实战指南

本文全面解析了自动驾驶中的BEV感知技术,从纯视觉到多传感器融合的实战应用。文章深入探讨了BEV如何提供“上帝视角”,对比了IPM、Lift-Splat-Shoot及Transformer等核心实现范式,并详细阐述了多传感器融合(尤其是中融合)的工程实践与优势,为开发者提供了从理论到原型搭建的完整指南。

win55的博客 1139

cesium 高程数据使用

cesium 高程数据使用高程数据下载高程数据切片简单数据服务 高程数据下载 使用地理空间数据云平台免费提供的高程数据。地理空间云平台 点击列表中的下载得到数据压缩包。例如:ASTGTM2_N22E114.zip 高程数据切片 使用cesium实验室工具对下载得到的压缩包进行切片。cesium实验室 切片得到的文件夹目录。 简单数据服务 使用nodejs的koa启动简单的资源服务。koajs 项目根目录新建data文件夹,在新建dem文件夹放高程数据。 注意目录自行更换,这里是./data/dem

哎哟这个凉白白的博客 1811

Android启动模式之singleinstance的坑

Android启动模式之singleinstance的坑 前言 在实际应用中,使用singleinstance启动模式时,会遇到一些奇奇怪怪的问题。Android有四种启动模式,分别是standard,singleTop,singleTask,singleInstance。下面分别简单的介绍下这四种启动模式的作用。 standard Android 默认的一种启动模式。不需要为activity设置launchMode。这种启动模式简单的来说就是当你startActivity的时候,他就创建一个.

秋天的博客 2176

STM32 IIC电量计LTC2944

LTC2944是一款电池电量计,设计用于端电压为3.6V至60V的多节电池。它测量电池充电和放电、电池电压、电流和自身温度。精密模拟库仑计数器通过电池正极端子与负载或充电器之间的检测电阻器对电流进行积分。电池电压、电池电流和硅温度由内部ADC测量。

baidu_34971492的博客 3161

singleInstance启动模式终于懂了!

singleInstance只能单独地位于一个任务栈中(创建了一个新的水桶来盛放这一个任务栈),应用场景:来电话界面;设计目的节省内存 singleTop和singleTask的区别 singleTop只检查栈顶,有相同的栈则只移除相同的栈:A–B--B(若B是singleTop则只有AB) singleTask检查所有任务栈,有相同的栈则移除以上所有栈:A–B--A–B(若B是singleTask则只有AB,若B是singleTop则有ABAB) ...

xiyangyang8110的博客 2985

YOLOv8【第七章:损失函数篇·第1节】一文搞定,IoU系列损失函数!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1197

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

ARINC 653 在综合模块化航空电子设备(IMA)的发展进程中扮演着极为关键的角色。从行业应用的实际情况来看,空客 A380 和波音 787 等先进飞机的航电系统套件充分体现了行业对 IMA 的高度重视和积极投入。在 IMA 架构下,核心软件具备强大的能力,能够支持多个航空电子应用程序的同时运行。这些应用程序可以并行开发,并高效地部署在同一个计算平台上,极大地提高了开发效率和系统集成度。ARINC 653 的出现为航空电子行业创造了一个充满活力和竞争力的商业环境。

2956

android的四种加载模式

在多Activity开发中,有可能是自己应用之间的Activity跳转,也有可能夹带其他应用的可复用的Activity,可能会希望跳转到原来某个Activity实例,而不产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 Activity有四种加载模式,分别为: 1、standard:标准模式(默认模式),一调用startActivi

sunny_wj的专栏 638

【python数据处理】python实现vlookup字符串模糊匹配及在实战中的应用(FuzzyWuzzy库)

利用FuzzyWuzzy库匹配字符串1. 背景前言2. FuzzyWuzzy库介绍2.1 安装2.1 fuzz模块2.1.1 简单匹配(Ratio)2.1.2 非完全匹配(Partial Ratio)2.1.3 忽略顺序匹配(Token Sort Ratio)2.1.4 去重子集匹配(Token Set Ratio)2.2 process模块2.2.1 extract提取多条数据2.2.2 extractOne提取一条数据3. pandas实战应用3.1 公司名称字段模糊匹配3.1.1 参数讲解:3.1.2

lys_828的博客 8322

android 加载模式,android开发笔记之 Activity四种加载模式

既然是安卓开发,我们就免不了和Activity打交道,因为它是前台的界面,也是android四大组件之一,那我们就来谈谈Activity的四种加载模式。为什么要为Activity指定加载模式?Android对Activity的管理,采用Task(即栈)来管理多个Activity,当我们启动一个应用时,Android就会为之创建了一个Task,然后启动这个应用的入口Activity。Android的...

weixin_39926749的博客 256

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android四种加载模式 重点内容

·                                       android四种加载模式 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加

AndroidDevWjm的专栏 519

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

安卓之Activity的四种加载模式

Activity的四种加载模式 >standard 标准模式 默认加载模式 >singleTop Task顶单例模式 >singleTask Task内单例模式 >singleInstance 全局单例模式 Android采用Task来管理多个Activity,当我们启动一个应用时,Android会为之创建一个Task,然后启动这个Task的入口Activity。Android的Task

保持你本色 494

android中activity的四种加载模式

一、何为加载模式在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。二、加载模式有哪些以及如何配置1、在android里面,activity有四种加载模式:standard, singleTop, singleTask, singleInstance 。详细介绍在后面。2、配置方法直接修改A

pcwings的专栏 1万+

android开发笔记之 Activity四种加载模式

既然是安卓开发,我们就免不了和Activity打交道,因为它是前台的界面,也是android四大组件之一,那我们就来谈谈Activity的四种加载模式。为什么要为Activity指定加载模式?Android对Activity的管理,采用Task(即栈)来管理多个Activity,当我们启动一个应用时,Android就会为之创建了一个Task,然后启动这个应用的入口Activity。Android的T

minigeek的博客 3931

android的四种加载模式,Android中Activity的四种加载模式

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?之前看Android深入理解Activity和Fragment这一章的时候,看到过Activity的四种加载模式,当时一方面觉得有点晦涩难懂,一方面觉得可能在以后的开发过程中用不到,所以就没有怎么细看。今天在看师兄做的项目代码时,发现在配置文件中都会指定加载模式android:launchMode属性。问了一下师兄,才知...

weixin_39676633的博客 284

Android中Activity的四种加载模式

下文整理自: http://blog.youkuaiyun.com/pcwings/article/details/5895197 ---------------------------------------- 一、何为加载模式 在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个acti

WOSHICAIXIANFENG的专栏 865

Android中Activity四种加载模式

Activity四种加载模式         我们知道在配置Activity的时候可以指定android:lauchMode属性,该属性用于配置该Activity的加载模式,概述行支持以下四种:        1.standard: 标准模式,这是默认的加载模式.        2.singleTop: Task顶单例模式.                3.single

凹凸曼哒小乖兽 2028

android的四种加载模式,android开发笔记之 Activity四种加载模式

既然是安卓开发,我们就免不了和Activity打交道,因为它是前台的界面,也是android四大组件之一,那我们就来谈谈Activity的四种加载模式。为什么要为Activity指定加载模式?Android对Activity的管理,采用Task(即栈)来管理多个Activity,当我们启动一个应用时,Android就会为之创建了一个Task,然后启动这个应用的入口Activity。Android的...

weixin_39937312的博客 227

Android Activity的四种加载模式

我们今天要讲的是Activity的四种launchMode。 launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个...

way 109

Android四种Activity的加载模式

Android四种Activity的加载模式

jfdtygv的博客 1375

Android Activity四种加载模式

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置 Activity有四种加载模式: standard(标准加载方式,默认加载方式) singleT

long704480904 1655

[android] activity的四种加载模式

activity有四种加载模式standard、singleTop、singleTask、singleInstance,其中standard是默认的加载模式 哪里设置 在AndroidManifest.xml中的中可以设置,如: <activity android:name="com.example.activitymodetest.SecondActiv

Meggie_love的专栏 833
上一篇: 关于Android在线支付Alipay(支付宝)开发的经验分享
下一篇: IOS教程
itchenlin
博客等级 码龄14年 37粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值