Activity四种启动模式(standard,singleTop,singleTask,singleInstance)
来源:互联网 发布:知乎登录注册页面实现 编辑:程序博客网 时间:2024/06/05 16:40
Activity一共有以下四种launchMode:
1.standard
2.singleTop
3.singleTask
4.singleInstance
启动模式在mainfest.xml里面的activity里面配置,如下图launchMode所示:
一,前提:Android对于Activity的管理方式
Android采用Task来管理多个Activity.当启动一个APP时,Android就会为之创建一个Task,然后每启动一个activity,则把当前的activity压到栈顶。比如以此启动页面A->B->C,栈里面的结构如下所示:
C------栈顶BA------栈底
按返回键的时候,从栈顶弹出页面依次为C->B->A
二,四种启动模式
1)standard
standard模式是默认的启动模式,不用为配置android:launchMode属性即为standard模式,当然也可以指定值为standard。
默认的启动模式比较简单,我有三个页面A,B,C,以此启动页面A->B->C,则在此模式下,栈里面从栈顶到栈底依次为C-B-A,如下所示
C------栈顶BA------栈底
如果此时按返回键,则页面退出顺序为C->B->A,其实为简单的栈操作,先近后出。
2)singleTop
当启动activity启动模式为android:launchMode=”singleTop”时。
1.比如Activity B启动模式为singleTop,Activity A为standard,此时从A页面跳转B页面,A->B时,会先在栈中查看栈顶是否存在B,存在的话,则复用栈顶B,调用onNewIntent方法,而不是重新new一个新的B。如果栈中不存在B,则会创建B。
2.再继续从B页面跳转B页面的时候,及A->B->B时,因为栈顶已经存在B了,则直接复用栈顶的B,调用onNewIntent方法,此时栈如下所示:
B------栈顶A------栈底
3)singleTask
当启动activity启动模式为android:launchMode=”singleTask”时,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。
比如Activity A启动模式为singleTask,Activity B为standard,Activity C为standard,此时A->B->C,则栈为
C------栈顶BA------栈底
接下来,继续跳转A,则A->B->C->A,因为此时A的启动模式为singleTask,发现栈中已经存在A,则会先把C,B出栈,然后再复用A,调用A的onNewIntent方法,此时,栈中只剩下A。
A
4)singleInstance
这种启动模式比较特殊,因为它会启用一个新的栈结构,将使用singleInstance的Acitvity放置于这个新的栈结构中,并保证不再有其他Activity实例进入。
比如Activity A启动模式为standard,Activity B为singleInstance,从页面A,跳到页面B,A->B,则会出现两个栈,如下:
A | B(栈1) (栈2)
此时按返回键,则,退出顺序为:B->A
比如Activity A启动模式为standard,Activity B为singleInstance,Activity C启动模式为standard,页面跳转为A->B->C,则会出现两个栈,如下:
C A | B(栈1) (栈2)
此时按返回键,则,退出顺序为:C->A->B,为什么会回到B页面呢,那是因为B跳转C的时候,我们的起点变成了B实例所在的栈结构,这样,我们需要回归到这个栈结构中来。
可能singleInstance你还没有理解,我再举个常见的例子。
比如Activity A启动模式为singleInstance,同时A也是入口activity,也是其他应用调用的activity(多个应用互相启动的场景)。
当我们从其他应用打开Activity A的时候,A会单独存在一个栈中,如果我们打开当前应用,则无需创建新的A实例即可看到结果,因为系统会自动查找,存在则直接利用。
- Activity四种启动模式:standard、singleTop、singleTask、singleInstance
- Activity四种启动模式(standard,singleTop,singleTask,singleInstance)
- Activity启动的四种模式:Standard,SingleTop,SingleTask,SingleInstance
- Activity四种启动方式 standard singleTop singleTask singleInstance
- Android Activity四种启动模式比较:standard,singleTop,singleTask,singleInstance
- Android入门:Activity四种启动模式:standard、singleTop、singleTask、singleInstance
- android Activity的四种启动模式详讲 singleTop standard singleTask singleInstance
- Activity四种启动模式详解1. standard 2. singleTop 3. singleTask 4. singleInstance
- Activity的四种启动模式——standard、singleTop 、singleTask 、singleInstance
- Activity的四种启动模式(standard、singleTop、singleTask、singleInstance)
- Activity四种启动模式 图文详解:standard, singleTop, singleTask 以及 singleInstance
- Android 中 Activity 启动模式(singleInstance、singleTask、singleTop、standard)
- Activity启动模式图文详解:standard, singleTop, singleTask 以及 singleInstance
- Activity启动模式图文详解:standard, singleTop, singleTask 以及 singleInstance
- Activity启动模式完全理解:standard, singleTop, singleTask 以及 singleInstance
- Activity启动模式图文详解:standard, singleTop, singleTask 以及 singleInstance
- Activity启动模式图文详解:standard, singleTop, singleTask 以及 singleInstance
- Activity启动模式图文详解:standard, singleTop, singleTask 以及 singleInstance
- tomcat启动在80端口
- Shell排序
- C++第六次实验———循环复习
- Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK黑屏问题
- shell之用while从文件中读取数据
- Activity四种启动模式(standard,singleTop,singleTask,singleInstance)
- VLC2.2.1 在vs2013中编译
- 数据仓库---企业信息工厂(EIF)
- Android学习笔记01-Activity
- 多点触控
- MySQL之innodb数据库引擎
- 杭电2844
- poj 1036 Gangsters lis
- 圆形ImageView