关于Activity的四种启动模式
2015-12-01 10:37
183 查看
Activity的四种启动模式standard,singleTop,singleTask,singleInstance
Activity什么都不配置,默认的模式是standard;一般都会设置属性launchMode = "四种启动模式之一"。默认情况一个app是根据包名来创建任务栈的
1、standard标准模式:如果把一个activity设置成该模式,则在启动该activity时候,会创建新的activity实例(只要启动就会创建)。所以对于标准模式的一个activity,在一个任务栈中的不同位置可能会存在不同的实例(所有实例处理一个Intent对象)
2、singleTop模式:如果任务栈中没有,则会创建一个新的activity实例,如果任务栈已经有且在栈顶则不新建实例,如果任务栈中有但是不在栈顶,则会创建新的activity实例。这也是singleTop和standard模式的区别
3、singleTask模式:对于 SingleTask模式的Activity,它在堆栈底端,其上方可以有其他Activity被创建, 但是,如果发给该Activity的Intent对象到来时该Activity不在堆栈顶端,那么该Intent对象将被丢弃,但是界面还是会切换到当前的Activity
4、singleInstance模式:对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动
singleTask 和 singleInstance模式的Activity 仅可用于启动任务的情况, 这种模式的Activity总是处在Activity堆栈的最底端,并且一个任务中只能被实例化一次
android:taskAffinity属性默认是false 在启动一个activity的时候设置Intent.FLAG_ACTIVITY_NEW_TASK这个属性(如果android:taskAffinity=true,则会在新的任务栈中创建,否则该标记不起作用)
Activity什么都不配置,默认的模式是standard;一般都会设置属性launchMode = "四种启动模式之一"。默认情况一个app是根据包名来创建任务栈的
1、standard标准模式:如果把一个activity设置成该模式,则在启动该activity时候,会创建新的activity实例(只要启动就会创建)。所以对于标准模式的一个activity,在一个任务栈中的不同位置可能会存在不同的实例(所有实例处理一个Intent对象)
2、singleTop模式:如果任务栈中没有,则会创建一个新的activity实例,如果任务栈已经有且在栈顶则不新建实例,如果任务栈中有但是不在栈顶,则会创建新的activity实例。这也是singleTop和standard模式的区别
3、singleTask模式:对于 SingleTask模式的Activity,它在堆栈底端,其上方可以有其他Activity被创建, 但是,如果发给该Activity的Intent对象到来时该Activity不在堆栈顶端,那么该Intent对象将被丢弃,但是界面还是会切换到当前的Activity
4、singleInstance模式:对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动
singleTask 和 singleInstance模式的Activity 仅可用于启动任务的情况, 这种模式的Activity总是处在Activity堆栈的最底端,并且一个任务中只能被实例化一次
android:taskAffinity属性默认是false 在启动一个activity的时候设置Intent.FLAG_ACTIVITY_NEW_TASK这个属性(如果android:taskAffinity=true,则会在新的任务栈中创建,否则该标记不起作用)
相关文章推荐
- composer使用
- 每天一个linux命令(13):tail 命令
- Caffe C++API 提取任意一张图片的特征系列二----MemoryData
- 支付账户:appid\mch_id(微信支付商户号)\API密钥\Appsecret
- Java读书笔记十二(Java中的代码块)
- VC 如何使程序运行后自己删除自己
- 架构-项目管理-jenkins
- cmd命令行字符编码修改
- 【curator】KeeperErrorCode = Unimplemented for /zookeeper/crud
- 收集微信里的图像处理中常用的图像库
- iOS 数字转汉子 等特殊字符串
- CentOS7 安装 swoole
- 多线程技术 NSThread & NSOperation & GCD
- 每天一个linux命令(12):head 命令
- RedHat6配置yum源 (32位)
- 转: RGB565、RGB888互相转换原理和代码
- nginx的负载均衡集群
- 基于php实现七牛抓取远程图片
- 【有效的单元测试】读书笔记第三章 测试替身
- 九度oj-1467-二叉排序树