Android Activity的4中启动模式及应用场景
来源:互联网 发布:淘宝订单不付钱 编辑:程序博客网 时间:2024/05/04 04:14
Android Activity的启动模式和各自的特点
在Android中,Activity的启动方式一共有4种:
- standand
- singleTop
- singleTask
- singleInstance
默认的启动方式是standand,设置启动方式的方法是在manifest注册文件中在需要设置启动方式activity中添加android:launchMode属性。
在介绍各个启动方式之前,需要对Android任务栈进行说明。
当一个App启动时,如果当前环境中不存在这个App的一个任务栈,那么会先创建一个任务栈来对以后可能产生的Activity进行管理。
对于栈结构,大家都很熟悉了的,就是一个“后进先出”的规则,需要注意的是,一个任务栈内的Activity可以来自不同的App,一个App的Activity也可以在不同的任务栈中。
standand
在standand模式下,每次启动一个Activity就会产生一个新的实例,而不管这个Activity是否相同,新创建的实例会覆盖在原来那个Activity之上。举例来说,应用只有一个MainActivity,创建之后点击跳转还是跳转到MainActivity,点击跳转2次,那么这个时候任务栈中会有3个序列号不同的MainActivity实例。
singleTop
顾名思义,就是栈顶复用模式。在启动一个Activity之前会检查任务栈的栈顶的Activity是不是即将要启动的Activity,如果是,那么就不会新建一个Activity而是直接复用这个Activity。如果不是那么就会重新创建,注意只是检查栈顶元素。
singleStack
这个和singleTop是很像的,但是注意这个是栈内复用,也就是说当我们想要启动一个Activity时,会在整个任务栈内查找是否有将要启动的Activity,如果有,那么会将这个Activity之上的Activity都清除掉,将这个Activity重新呈现在栈顶的位置,也就是说这种启动模式有清除栈顶的作用。
需要注意的是,如果这个Activity已经在后台的一个任务栈中了,那么这个后台任务栈也会被切换到前台。
singleInstance
单实例模式,也就是说每一个任务栈种只有一个Activity的实例,每次启动一个新的Activity时都会新建一个任务栈然后将他的实例放进去。举个例子,应用A使用singleInstance模式创建了MainActivity的一个实例,应用B也需要激活MainActivity,那么B会不需要新建,而是和A复用这个任务栈中的MainActivity的实例。
适用场景
singleTop适用于用于接受消息后需要显示的页面,比如说qq接收到消息后需要弹出Activity,如果一次来了多条消息,那总不能一次弹出好几个Activity页面吧,打开一个之后Activity在栈顶,后面的就可以直接复用了。
singleTask适用于程序的入口。比如说浏览器的主页面,不管多少个应用启动浏览器,首先打开的都是主页面,并且如果之前有打开的页面也会被清除掉。
singleInstance适用于需要与程序分离的页面,比如说闹钟提醒页面。
结语
这里只是对4中启动方式做了简单的总结,没有详述,另外只有文字说明可能对任务栈的理解不够深刻,这里推荐上Android开发者网站上看,有启动模式的任务栈的情况说明图,另外,下面的一篇blog写的很详细很生动:
http://blog.csdn.net/CodeEmperor/article/details/50481726
- Android Activity的4中启动模式及应用场景
- Activity的启动模式及应用场景
- Activity的启动模式及应用场景
- activity的启动模式及应用场景
- Activity的启动模式及应用场景
- Android四大组件---Activity之启动模式及启动模式的应用场景
- Android activity 启动模式应用场景
- Activity启动模式的应用场景
- Activity的4种启动模式与应用场景
- activity启动模式应用场景
- android activity四种启动模式介绍及应用场景以及实例演示
- [Android开发]Activity的四种启动模式及其应用场景
- [Android开发]Activity的四种启动模式及其应用场景
- 安卓activity启动模式的应用场景
- Activity的四种启动模式和应用场景
- 回顾Activity的启动模式及其应用场景
- Activity的四种启动模式及其应用场景
- Activity的四种启动模式及其应用场景
- ubuntu问题g++ : 依赖: g++-4.8 (>= 4.8.2-5~) 但是它将不会被安装
- HDU 5543 Pick The Sticks (DP 01背包)
- windows上Nutch2.3.1导入Eclipse详解
- 树莓派上手使用
- MYSQL主从复制配置步骤
- Android Activity的4中启动模式及应用场景
- Java 基础总结
- 测试回文整数(java语言程序设计习题6-3)
- ubuntu下bower报EACCES: permission denied的解决办法
- MySQL的主主互备+KEEPALIVED实现高可用(转)
- selenium webdriver调用高版本Firefox配置geckodriver
- Android 7.0 FileProvider的使用
- xxx is not in the sudoers file.This incident will be reported.的解决方法
- POJ 3552