Actvity的四种Launchmode
来源:互联网 发布:西南交大网络教育 编辑:程序博客网 时间:2024/06/10 03:12
我们今天讲的是Activity的四种Launchmode.
launchmode在Activity跳转中扮演者多个角色,它可以决定是否生成新的Activity实例,是否重用以
存在的Activity实例,是否和其他的Activity共用一个task里,这里简单的介绍下task,task是一个具有
栈结构的对象,一个task能有多个Activity,启动一个工程,也就创建了与之对应的task。
Activity有四种Launchmode:
1.standard.
2.singleTop.
3.singleTask.
4.singleInstance
下面我们来介绍这四种Launchmode.
1.standard
standard是Activity默认的启动模式,不用为Activity配置Launchmode="standard",当然也可以指定
standard。下面我们可以用图片来说明下:
由图结构我们可以看出,FirstActivity是处于所有Activity中的栈顶的,因为我们在<Activity>配置中
设置了Launchmode="standard"默认的跳转方式,所以FirstActivity跳转到FirstActivity都会生成新的实例。
故此Launchmode=“standard”和默认情况下,Activity跳转到Activity都会生成新的实例。
2.singleTop
从上面提到Activity配置中设置Launchmode="singleTop",那么这个Activity系统会根据singleTop的
跳转方式来跳转。从下图中我们可以看出来:
从上图可以看出FirstActivity的Launchmode="singleTop",只要这个FirstActivity处于栈顶,
FirstActivity跳转到FirstActivity就不会在栈中创建新的FirstActivity实例。这就是在一个Activity
中的效果,那么在多个Activity中跳转时怎样的情况呢!通过下图我们可以看到,
从上图可以看出,刚开始程序一运行我们看到的是FirstActivity是处于栈顶的,我们从FirstActivity
跳转到SecondActivity,因为SecondActivity在栈中没有实例,我们就会创建一个实例。此时FirstActivity
就会停止掉,那么SecondActivity就会处于栈顶,由于此时FirstActivity不处于栈顶,所以FirstActivity的
配置Launchmode="singleTop"跳转方式说明,从SecondActivity跳转到FirstActivity就会创建一个新的实例
,这就SingleTop的跳转方式。
3.singletask
从配置文件中Launchmode="singleTask",那么我们会根据singleTask跳转方式来跳转。如图:
从图中可以看出来,因为FirstActivity在配置中设置了launchmode="singleTask",那么程序一运行
就进入到FirstActivity中就在栈中创建了FirstActivity的实例,在从图中可以看出来,从FirstActivity
跳转到SecondActivity就会在栈中创建SecondActivity实例。因为FirstActivity的Launchmode="singletask"
,所以在从SecondeActivity跳转到FirstActivity中SecondActivity就会被迫出栈,所以在栈中就不会有
SecondActivity实例。再从FirstActivity跳转到SecondActivity中又会重新创建新的SecondActiviy实例。
4.singleInstance
在Activity配置中设置Launchmode="singleInstance",那么这个Activity就会执行singleInstance
跳转方式。如图所示:
从上图可以看出来,启动一个程序进入到FirstActivity就会创建一个栈,如果再从FirstActivty
跳转到SecondActivity中,由于FirstActivity配置Launchmode="singleInstance",所以跳转到
SecondActivity中我们就会创建一个新的栈,如果我们按后退键回到原始栈中,这时候系统会在原始
栈中生成一个新的FirstActivity实例。然后再回退两次,然而并没有退出,而是回到SecondActivity
中,为什么呢?是因为从SecondActivity跳转到FirstActivity中,我们的起点变成了SecondActvity
所在的栈中,这样一来,我们需要“回归”到这个栈中。
如果我们修改FirstActivity的Launchmode的值为standard、singleTop、singleTask、singleInstance时
我们就会执行
跳转。
- Actvity的四种Launchmode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- Activity的四种launchMode
- 01-教你写一个web远程控制小工具
- Java并发库(五、六、七):线程范围内共享数据、ThreadLocal、共享数据的三种方法
- Android活动Acitivity启动模式之singleInstance
- 2015七件事:今年的科技圈有些寡淡无味
- Google 不推荐在 URL 里使用竖线
- Actvity的四种Launchmode
- 自动化管理工具Saltstack之认证篇(3)
- 拆装机
- 装系统,你会了吗?
- 装系统续
- 【转载】谈 “上不去网” 的多种原因和各种奇葩故障
- VB阶段学习小结及感想
- mac git 命令自动补全
- 动脑思考很重要