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

相关文章

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

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)