当前位置: 首页 > 编程日记 > 正文

#读书笔记 Android-Activity启动模式

什么是Activity的启动模式?当启动一个Activity的时候,系统会创建一个实例,并把它放入到一个任务栈中,至于如何存放,就是由这个启动模式来决定的。Android系统支持多任务,所以系统中会同时存在多个任务,而一个App中的组件可能存在于不同的任务栈中,甚至一个App的某个activity可以单独存在于独立的一个任务栈,并且一个任务栈中也可能存在来自不同App的activity实例。

Activity的LaunchMode有四种启动方式:standard、singleTop、singleTask、singleInstance,他们的具体含义如下:

(1)standard:默认的启动模式,每次启动都会去创建新的Activity实例,并且有完整的生命周期回调,在这种模式下,新启动的activity会存在于启动它的那个activity的栈中。由于这个特性,会引发一个问题,当我们尝试使用ApplicationContext来启动使用了standard模式的activity时,会出现如下错误:

E/AndroidRuntime(3403): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

这是因为ApplicationContext是非activity类型的context,它没有任务栈,导致新启动的activity“无家可归”,解决办法就是将要启动的activity设置为FLAG_ACTIVITY_NEW_TASK模式,让它在启动的时候创建一个新的任务栈。

(2)singleTop:栈顶复用模式,这种模式下,如果新的activity已经在当前栈顶存在实例,则此activity不会重新创建,转而会回调它的onNewIntent方法,这个回调方法会携带Intent参数,可以用来获取传递的参数。此时因为没有创建新的实例,所以onCreat和onStart并不会回到,如果当前栈内已存在有此activity的实例,但是不位于栈顶,新的实例仍然会被创建。

(3)singleTask:栈内复用模式。这种模式只要栈内存在待启动activity实例,就不会重新创建实例,与singleTop一样,只会回调OnNewIntent方法,并通过把栈内实例顶部的其他实例全部出栈,来让新的activity实例处于栈顶。

(4)singleInstance:单实例模式,这可以看成是加强版的singleTask模式,因为使用这种模式的activity,会启动在单独的一个栈中。

想要给activity知道启动模式有两种方法,第一种是在AndroidMenifest.xml文件中给activity设置 android:launchMode="singleTask" 另一种情况就是通过Intent中设置标志位来指定intent.addFlages(Intent.FLAG_ACTIVITY_NEW_TASK) ,这两种方式是有区别的,第一,优先级不同,第二种模式比第一种模式优先级高,即当两种方法同时使用时,以第二种为准;第二,限定范围不同,第一种无法为activity设定FLAG_ACTIVITY_CLEAR_TOP标识,第二种无法指定为singleInstance模式。


上面说到activity的Flags即标志位,标志位的作用有很多,可以设定activity的启动模式,决定activity的运行状态等。下面记录几个常用的标志位:

  1. FLAG_ACTIVITY_NEW_TASK

    这个标志位的作用就是指定activity为“singleTask"模式。

  2. FLAG_ACTIVITY_SINGLE_TOP

    这个标志位的作用就是指定activity为“singleTop"模式。

  3. FLAG_ACTIVITY_CLEAR_TOP

    这个标志位的作用就是当栈中存在有待启动的activity的实例时,会清空该实例顶部使得待启动activity处于栈顶位置。

  4. FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 该标志使得启动的activity不会出现在activity历史列表当中。

相关文章:

计算机专业PhD申请文书范文,美国留学博士申请文书怎么写之范文分享

【导语】对于计划申请美国博士学位的同学,美国博士申请文书的写作尤为重要。美国博士申请文书怎么写呢?本文无忧考网提供了一篇美国土木工程博士申请个人陈述范文,大家可以根据文章理清自己的写作思路。I am planning to pursue graduate studies towar…

ubuntu安装Android SDK,adb,fastboot

1,Eclips先安装:ADT: https://dl-ssl.google.com/android/eclipse/ 2,由于是64bit的系统,而Android sdk只有32bit的程序,需要安装ia32-libs,才能使用。 运行如下命令:sudo apt-get install ia32-libs 3,下载…

Eureka服务注册中心

Eureka服务注册中心 最近在研究Spring Cloud,发现其中的组件实在是太多了,真的是头大,只能一块一块看,像盲人摸象一样。要想很短时间内掌握Spring Cloud是不可能的,小编就学习一块就在这里分享一块,有什么不…

【组队学习】【32期】动手学数据分析

动手学数据分析 航路开辟者:陈安东、金娟娟、杨佳达、老表、李玲、张文涛、高立业领航员:范淑卷航海士:武者小路、曾心怡 基本信息 内容属性:精品入门课系列开源内容:https://github.com/datawhalechina/hands-on-d…

win8系统的计算机共享在哪里设置方法,怎么设置win8无线共享呢?

在windows8中怎么设置无线共享呢,接下来小编和大家一起来看看怎么设置windows8无线共享吧。1.以管理员模式运行CMD 输入命令行 netsh wlan show drive 如果支持会显示为是 。2.下面就搭建承载网络,输入 netsh wlan set hostednetwork mode allow ssid你想…

Android13.9.15

在创建android项目中&#xff0c;有一栏package name&#xff1a;——在Properties&#xff08;属性&#xff09;区域包名栏输入***.***。 &#xff08;包名至少应该包含两部分&#xff0c;中间用英文句点隔开&#xff09; 在main.xml文件中我们一定会看到下面这段代码 <?x…

【组队学习】【32期】李宏毅机器学习(含深度学习)

李宏毅机器学习&#xff08;含深度学习&#xff09; 航路开辟者&#xff1a;王茂霖、陈安东&#xff0c;刘峥嵘&#xff0c;李玲领航员&#xff1a;郭棉昇航海士&#xff1a;汪超、赵美 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/leeml-notes开源内容…

SVN提交错误:working copy is not up-to-date解决方法

我在项目中删了2个jar&#xff0c;然后SVN提交&#xff0c;一直提交不成功 svn在提交时报错如下图: working copy is not up-to-date svn:commit failed(details follow): svn:file "xxxxx is out of date" item is out of date svn:item "xxxx" is out of…

西部数码买哪处线路的云服务器,云服务器买哪个区合适

根据用户所在地区对于国内大陆的应用&#xff0c;选择国内地区的服务器速度肯定好于海外地区节点的速度。对于中国香港及海外其他国家节点来说&#xff0c;由于地理位置相差较远和路由等因素&#xff0c;不同节点会有较长的访问延迟&#xff0c;可以按照以下方式选择&#xff1…

从原则、方案、策略及难点阐述分库分表

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/79936693 一、分库分表原则 关系型数据库本身比较容易成为系统性能瓶颈&#xff0c;单机存储容量、连接数、处理能力等都很有限&#xff0c;数据…

.Net Framework中的委托与事件

using System; using System.Collections.Generic; using System.Text;namespace Delegate {// 热水器public class Heater {private int temperature;public string type "RealFire 001"; // 添加型号作为演示public string area "China Xian"; …

中国电子学会青少年编程能力等级测试图形化一级编程题:小鸡与鸭妈拥抱

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

坦克世界服务器未响应怎么解决,华硕笔记本老是程序未响应怎么处理

电脑型号 华硕 P45VJ 笔记本电脑操作系统 Windows 7 专业版 64位 ( DirectX 11 )处理器 英特尔 第三代酷睿 i7-3520M 2.90GHz 双核主板 华硕 P45VJ (英特尔 Ivy Bridge - HM76 Express 芯片组)内存8 GB ( 尔必达 DDR3 1600MHz )主硬盘 日立 HGST HTS541010A9E680 ( 1 TB / 540…

中国电子学会青少年编程能力等级测试图形化一级编程题:无奈的Jaime

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

解决jupyter中无自己创建的虚拟环境

最近看的教程都是用的jupyter&#xff0c;按理说都一样吧&#xff0c;但是pycharm中python有的模块就弃用了&#xff0c;而jupyter却都可以用&#xff0c;而且jupyter听说也不错&#xff0c;就配置了一下下 1.打开cmd&#xff0c;激活你的虚拟环境&#xff0c;我的是tensorflow…

从“如何学会做一只机械表”讲如何创新,如何做好产品

Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00015862 为什么我总劝第一次创业的人先做山寨产品呢&#xff1f;因为游戏行业太多人太有理想了&#xff0c;因为玩过的好游戏很多&#xff0c;所以有冲动想自己做游戏&#xff0c;这样入行的人太多&a…

放大 旋转 css3,CSS3详解:transform 的旋转、旋转放大、放大、移动

CSS3 transform是什么&#xff1f;transform的含义是&#xff1a;改变&#xff0c;使…变形&#xff1b;转换CSS3 transform都有哪些常用属性&#xff1f;transform的属性包括&#xff1a;rotate() / skew() / scale() / translate(,) &#xff0c;分别还有x、y之分&#xff0c…

Web SCADA 电力接线图工控组态编辑器

前言 SVG并非仅仅是一种图像格式&#xff0c; 由于它是一种基于XML的语言&#xff0c;也就意味着它继承了XML的跨平台性和可扩展性&#xff0c;从而在图形可重用性上迈出了一大步。如SVG可以内嵌于其他的XML文档中&#xff0c;而SVG文档中也可以嵌入其他的XML内容&#xff0c;各…

IE6、IE7、IE8的CSS、JS兼容

Internet Explorer 6中查看使用 Microsoft JScript 的网页&#xff0c;可能会遇到web浏览器速度较慢的性能问题。原因是如果js脚本同时创建大量变量&#xff0c;jscript引擎执行垃圾收集算法时会监视脚本中变量分配的 数量、脚本中使用的文字值的数量和脚本中分配的字符串值的总…

中国电子学会青少年编程能力等级测试图形化一级编程题:海底世界

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 海底世界 1. 准备工作 &#xff08;1&#xff09;背景&#xff1a;Underwater…

小说站 章节内容 ajax,第17章 作业分析与异步编程原理——2019年5月14日22:00

5月14日作业完善购物车的删除与编辑功能谈一下你对单线程,任务队列与事件循环, 同步与异步的理解单线程&#xff1a;单线程在程序执行时&#xff0c;所走的程序路径按照连续顺序排下来&#xff0c;前面的必须处理好&#xff0c;后面的才会执行。比如&#xff1a;JavaScript就是…

【转载】图像缩放与插值理论基础

图像的缩放 图像经过缩放后有可能在原图中招不到对应的像素点&#xff0c;这需要用图像插值来解决。 1.理论基础 假设图像的X轴方向缩放比例是Kx&#xff0c;Y轴方向的缩放比是Ky&#xff0c;则缩放后输出图像的点&#xff08;x , y&#xff09;对应原图中坐标&#xff08;u , …

【组队学习】【32期】SQL编程语言

SQL编程语言 航路开辟者&#xff1a;王复振、杨煜、闫钟峰、杨梦迪、苏鹏、红星、张晋、汪健麟领航员&#xff1a;李云龙航海士&#xff1a;蒋志强、闫钟峰 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/wonderful-sql开源内容&#xff1a;https://hub.…

查找手机型号云服务器,查找手机型号云服务器

查找手机型号云服务器 内容精选换一换您可以通过“应用管理”页面的应用列表&#xff0c;快速查看应用状态&#xff0c;及相关异常信息&#xff0c;如图1所示。包括&#xff1a;应用状态&#xff1a;即图1中的①应用异常信息&#xff1a;即图1中的②云服务器异常信息&#xff1…

浅谈25种设计模式(4/25)(此坑未填)

设计模式汇总 创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式&#xff0c;而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式&#xff08;Factory Pattern&#xff09;抽象工厂模式&#xf…

C#学习笔记8:HTML和CSS基础学习笔记

<!-- 1、<P>...</P>段落标签 2、<br/>折行标签。 3、<img src"" height"*px" width"*px" alt"图片描述">。 注意&#xff1a;不能写成<img ></img>的形式。 4、html注释&#xff1a;<!-- …

青少年编程竞赛交流群周报(第043周)

2021年12月26日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第四十三期直播活动。 一、直播内容 我们直播活动的主要内容如下&#xff1a; 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题&#xff08;四级&#xff09;。…

数据库备份到文件服务器,数据库文件备份到云服务器上

数据库文件备份到云服务器上 内容精选换一换目前数据库服务器备份Agent安装包需要提交工单进行获取。当前仅支持x86计算类型的服务器&#xff0c;暂不支持鲲鹏计算类型的服务器。用户需要启用数据库备份前&#xff0c;需先在弹性云服务器上更改安全组和安装客户端。本章节指导用…

android String.format

资源创建&#xff1a; <!-- 多参数验证 --> <string name"text">截止到:%1$tc\n销售量比去年增长了%2$d%%\n在这里我对所有奋斗的兄弟姐妹表示感谢\n对表现最优秀 的%3$s等伙伴我们予以奖励\n奖励为价值%4$-9.4e的新马泰游\n希望大家再接再厉额!<…

【组队学习】【32期】数据可视化(Matplotlib)

数据可视化&#xff08;Matplotlib&#xff09; 航路开辟者&#xff1a;杨剑砺、杨煜、耿远昊、李运佳、居凤霞领航员&#xff1a;王万航海士&#xff1a;范歆琦、张文恺 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/fantastic-matplotlib开源内容&…