博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activity启动模式
阅读量:5774 次
发布时间:2019-06-18

本文共 1314 字,大约阅读时间需要 4 分钟。

启动模式有四种,分别是:standard、singleTop、singleTask、singleInstance,可以在AndroidManifest.xml文件中通过给<Activity>标签指定android:launchMode属性来选择启动模式。

1. standard

standard是活动默认的启动模式,在不进行显示指定的情况下,所有活动都会自动使用这种启动模式。Android是使用返回栈来管理活动的,在standard模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处理栈顶的位置。对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。

例如:应用启动显示的活动是A,A中启动了B,B中启动了C,活动A、B、C的启动模式都是standard模式的,这时候你如果想退出这个应用,需要点击三次Back键才可以。

同样的,如果我们在活动A中,点击按钮Button启动了活动A,然后再点击按钮Button,又启动了A,这时候返回栈中有三个活动A,需要点击三次Back键才能退出应用。

开启几个关闭几个

2. singleTop

使用singleTop模式时,在启动活动的时候,如果返现返回栈的栈顶已经是该活动,则认为可以直接使用,不会再创建新的该活动的实例。

例如,系统默认启动了活动A,在活动A中,点击按钮Button启动了活动A,然后再点击按钮Button,又启动了A,这时候返回栈中其实仍旧只有一个活动A,我们只需要点击一次Back键就能退出应用,活动A是singleTop模式的。

同样的,应用中有A、B两个活动,它们的启动模式都是singleTop,应用启动A,然后A启动了B,B又启动了A活动,这时候返回栈中其实有两个A,一个B,我们需要点击三次Back键才能退出应用。

顶部允许有一个实例栈

3. singleTask

使用singleTask模式时,每次启动活动的时候,系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在该活动的实例,直接使用该实例,并把这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

例如,应用默认启动了活动A,活动A是singleTask模式的,然后A启动了B,B启动了C,C又启动了A,这时候返回栈中其实只有一个A,B、C都已经被出栈,只需要点击一次Back键就可以退出应用。

在栈中只允许有一个实例,以前的会清空

4. singleInstance

使用singleInstance模式的活动,会有一个单独的返回栈来管理这个活动,一般来说,这种模式是可以用来实现其他应用程序和我们的程序可以共享这个活动的实例的,不管是哪个应用程序来访问这个活动,都共用的同一个返回栈。

例如,应用默认启动了活动A,A启动了活动B,活动B是singleInstance模式的,然后活动B启动了C,我们点击Back键,会从C跳转到活动A,因为A和C在一个返回栈,而B是另一个返回栈,在点击Back键,A跳到了B,再点击Back键,退出程序。

整个手机中只有一个实例存在,并且运行在自己单一栈中

转载地址:http://jbaux.baihongyu.com/

你可能感兴趣的文章
iphone-common-codes-ccteam源代码 CCEncoding.m
查看>>
微信公众平台开发(96) 多个功能整合
查看>>
[转]MVC4项目中验证用户登录一个特性就搞定
查看>>
用Perl编写Apache模块续二 - SVN动态鉴权实现SVNAuth 禅道版
查看>>
Android 阴影,圆形的Button
查看>>
C++概述
查看>>
卡特兰数
查看>>
006_mac osx 应用跨屏幕
查看>>
nginx中配置文件的讲解
查看>>
MindNode使用
查看>>
SQL Server 2016 Alwayson新增功能
查看>>
HTTP库Axios
查看>>
CentOS7下安装python-pip
查看>>
认知计算 Cognitive Computing
查看>>
左手坐标系和右手坐标系 ZZ
查看>>
陀螺仪主要性能指标
查看>>
Java 架构师眼中的 HTTP 协议
查看>>
Linux 目录结构和常用命令
查看>>
Linux内存管理之mmap详解 (可用于android底层内存调试)
查看>>
利润表(年末)未分配利润公式备份
查看>>