Android之android:launchMode
来源:互联网 发布:万网域名跳转设置 编辑:程序博客网 时间:2024/05/28 15:36
在Android的中Activity有4种启动方式:"standard"、"singleTop"、"singleTask"、"singleInstance"。
现在task栈元素为A-B-C-D(D在栈顶),这时候给D发一个启动intent,如果D是 “standard”的,则生成D的一个新实例,栈变为A-B-C-D-D。
如果D是singleTop的话,则不会生产D的新实例,栈状态仍为A-B-C-D
如果这时候给B发Intent的话,不管B的launchmode是”standard” 还是 “singleTop” ,都会生成B的新实例,栈状态变为A-B-C-D-B。
注意:在一个Activity处理新的intent的时候,用户不能使用Back button来返回到先前的Activity。直到新的intent到达onNewIntent()方法中后,才可以。
3、singleTask启动方式
如果已经有其他的Task并且包含Activity实例,那就直接调用那个Task的实例。(只有一个Task中会有) 而不是创建一个新的实例。重点:假如你启动一个singleTask的Activity,同时这个Activity在background task中,那么整个background task都会被调入到前台来。下面这幅图就很好的说明这个问题。
有人问如果我调用图中的Activity X,会怎样?系统会先把Activity Y销毁,然后再将Activity X放到前台。
4、singleInstance启动方式
singleInstance 新建一个Task,且在该Task中只有它的唯一一个实例。 (只有一个Task会有,且该Task中只有它)。“singleInstance”是其所在栈的唯一activity,它会每次都被重用。
总结:
standard 每次都会新建,每个Task都可以有,且每个Task都可以有多个实例(每个Task都可以有,且可以有多个)
singleTop 当前实例如果在栈顶,就不新建实例,调用其OnNewIntent。 如不在栈顶,则新建实例 (每个Task都可以有,且可以有多个,在栈顶时可复用)
singleTask 新建一个Task,如果已经有其他的Task并且包含该实例,那就直接调用那个Task的实例。(只有一个Task中会有)
singleInstance 新建一个Task,且在该Task中只有它的唯一一个实例。 (只有一个Task会有,且该Task中只有它)
intent的flag可以覆盖activity的启动模式:
FLAG_ACTIVITY_NEW_TASK 类似singleTask
FLAG_ACTIVITY_SINGLE_TOP 类似singleTop
FLAG_ACTIVITY_CLEAR_TOP 无对应
补充说明里面遗漏的东西。
- Android之android:launchMode
- Android之android:launchMode
- Android之android:launchMode
- Android之android:launchMode
- Android之launchMode
- Android之Activity LaunchMode
- android之launchMode相关内容
- Android基础之LaunchMode
- android系列:Android之android:launchMode
- android launchMode
- Android launchMode
- android:launchMode
- android launchmode
- Android launchMode
- Android launchmode
- Android launchMode
- android launchmode
- android:launchMode
- C语言 realloc为什么要有返回值,realloc返回值详解/(解决任意长度字符串输入问题)。
- ArcGIS教程:了解成本距离分析
- J-LINK V8固件烧录指导
- 扩展KMP+hdu3613
- 汽车电商竞争白热化,“五大门派”谁能登顶?
- Android之android:launchMode
- 职场分享:如何培养职场核心竞争力
- poj 3621 Sightseeing Cows ( 求最优比例生成环/01分数规划 )
- 南宁打玻尿酸效果好不好 武警总队微整形注射
- static,final和abstract 对比
- 经典Link
- 国内PaaS概述及EEPlat定位
- Java编程思想之7复用类
- 经典c程序(0031) ---中缀表达式转后缀表达式并求值