activity启动模式(1、standard,singleTop,singleTask,singleInstance)

本文主要是介绍activity启动模式(1、standard,singleTop,singleTask,singleInstance),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

activity启动模式:(配置android:launchMode="")
1、standard(标准模式,每次启动activity都会创建一个新的activity实例)
2、singleTop(可以有多个实例,但是不允许activity的多个实例叠加,即:如果有activity的实例 在栈顶的时候,启动这个activity,不会创建新的实例,而会调用其onNewIntent()方法,如果不在栈顶则创建新的实例)
toast.makeText().show()//让文本显示一段时间后消失,相当于c#中的tooltip或者具有存活时间的messageBox
3、singleTask(在栈中只能有一个实例,在同一个应用程序中启动它的时候,若不存在此activity实例,则会在当前栈中创建,若存在,则会把栈中在其之上的其他activity实例销毁掉,并调用此实例的onNewIntent()方法。)

4、singleInstance(只有一个实例,并且这个实例独立运行在一个activity任务栈中,即单独存在于一个栈中,这个任务栈中只有这个实例,不允许有别的activity存在)


Task概念:

task是一个具有栈结构的容器,可以放置多个activity实例

启动一个应用,系统就会为之创建一个task,来放置根activity

一个activity启动另一个activity时,两个activity是放置在同一个task中的,后者被压入前者所在的task栈,当用户按下后退键,后者从task被弹出,前者又显示在幕前

taskAffinity:(task亲和力的意思)

指出了activity希望进入的task

如果一个activity没有显示的指明该activity的taskAffinity,那么它的这个属性就等于application指明的taskAffinity

如果application也没有指明,那么该taskAffinity的值就等于包名

task也有自己的affinity属性,它的值等于它的根activity的taskAffinity的值


intentFlag:

1,FLAG_ACTIVITY_NEW_TASK:

    系统会寻找或创建一个新的task来放置目标activity,寻找时依据目标activity的taskAffinity属性来进行匹配,如果找到一个task的taskAffinity与之相同,就将目标activity压入此task中,如果查找无果,则创建一个新的task,并将该task的taskAffinity设置为目标activity的taskAffinity,将目标activity放置于此task

2,FLAG_ACTIVITY_SINGLE_TOP:

    当task中存在目标activity实例并且位于栈的顶端时,不在创建一个新的,直接利用这个实例

3,FLAG_ACTIVITY_CLEAR_TOP:

    如果要激活的那个activity在任务栈中存在该实例,则不需要创建,只需要把该activity之上的activity实例都出栈

4,FLAG_ACTIVITY_REORDER_TO_FRONT:

    如果栈中已经存在,则将它拿到栈顶,不会启动新的activity(重新给task中的activity排序)



这篇关于activity启动模式(1、standard,singleTop,singleTask,singleInstance)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072389

相关文章

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refresh 加载 IOC容器,加载所有的自动配置类,创建容器在这个过程

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法