Activity的LaunchMode
2015-11-07 17:20
134 查看
关于android的启动模式 ,相信大家并不陌生,本人有幸购入《Android开发艺术探索》一书,个人认为作者写的不错 与大家分享。
standard:标准模式,也是系统的默认模式。创建的实例的生命周期符合典型情况,在这种模式下,该Activity会进入到启动该act的act的任务栈中。需要注意的是 如果我们用ApplicationContext启动startard模式时 会报AndroidRuntimeException 因为么有任务栈 所以必须加入FLAG_ACTIVITY_NEW_TASK
singleTop 栈顶复用模式 如果该ACT已经被建立且处于栈顶 则不会重新建立 会调用onNewIntent方法。
singleTask 栈内复用模式 单实例模式 只要Activity在栈中存在 则不会创建该实例。当一个singletask模式的act请求启动后,系统会寻找是否存在a想要的任务栈。如果存在该栈,则去寻找是否有该实例,如果存在该实例 则会调用onnewIntent.如果不存在则会压栈。
如果S1栈中AB 这时C 需要以singleTask模式启动 需要的任务栈s2 这时c所需的都没有 则会建立任务栈s2 且建立c实例 后压栈。
如果所需栈为s1 则直接压栈 如果栈中已有该实例 则直接调用该实例 abc 进栈b 则栈内历史为ab 清除c Activity 与clearTop类似。
singleInstance 单实例模式 只能该Act处于独立任务栈。
standard:标准模式,也是系统的默认模式。创建的实例的生命周期符合典型情况,在这种模式下,该Activity会进入到启动该act的act的任务栈中。需要注意的是 如果我们用ApplicationContext启动startard模式时 会报AndroidRuntimeException 因为么有任务栈 所以必须加入FLAG_ACTIVITY_NEW_TASK
singleTop 栈顶复用模式 如果该ACT已经被建立且处于栈顶 则不会重新建立 会调用onNewIntent方法。
singleTask 栈内复用模式 单实例模式 只要Activity在栈中存在 则不会创建该实例。当一个singletask模式的act请求启动后,系统会寻找是否存在a想要的任务栈。如果存在该栈,则去寻找是否有该实例,如果存在该实例 则会调用onnewIntent.如果不存在则会压栈。
如果S1栈中AB 这时C 需要以singleTask模式启动 需要的任务栈s2 这时c所需的都没有 则会建立任务栈s2 且建立c实例 后压栈。
如果所需栈为s1 则直接压栈 如果栈中已有该实例 则直接调用该实例 abc 进栈b 则栈内历史为ab 清除c Activity 与clearTop类似。
singleInstance 单实例模式 只能该Act处于独立任务栈。
相关文章推荐
- MySQL存储引擎的那些事儿
- C9014
- SODBASE CEP学习进阶篇(七):SODBASE CEP与Spark streaming集成
- ANT标签
- Android开发文摘集合1
- XMPP客户端库Smack
- XMPP客户端库Smack
- XMPP客户端库Smack
- perl 自动登录盈盈理财
- javascript笔记
- 一个简单的下载网页上图片的程序
- 数据表不没有数据的时候,各个统计函数返回的值
- SpringMVC @RequestBody接收Json对象字符串
- Android监听自身卸载,弹出用户反馈调查
- linux常用命令locate,which,whereis,grep
- Android监听自身卸载,弹出用户反馈调查
- Android监听自身卸载,弹出用户反馈调查
- IEnumerator 和IEnumerable,及其泛型
- 继《一次体验很不爽的面试经历》后深入反思
- 文件读写权限