Android中Activity的4种加载模式
2016-04-06 22:15
363 查看
Activity以不同的模式加载,在栈中的存放方式是不一样的
Android中有4种Activity的加载模式
Android采用Task来管理Activity
Task以栈的形式管理Activity:先启动的Activity被存放在栈底,后启动的Activity被存放在栈顶
启动一个应用时,Android就会创建一个Task
默认加载模式,以这种模式加载,不会单独创建Task,会将新的Activity放在该应用原有的Task中,多次启动同一个Activity会有不同的Activity实例被放入Task中(这些实例的hashCode不同,但所在的Task ID是一样的)
如果要启动的目标Activity处于Task栈顶,则直接使用该栈顶的目标Activity
如果要启动的目标Activity不在栈顶,会重新创建一个目标Activity的实例并将其加载到Task栈顶(即使Task中存在该Activity实例,依然会创建,但是新的实例和原有实例的hashCode不同)
这种模式下的Activity在栈中只能有一个实例
Activity实例不存在:创建该Activity的实例,加入Task栈顶
Activity实例存在且位于栈顶:不做任何操作
Activity实例存在但不位于栈顶:将目标Activity之上的实例移除Task栈,使得目标Activity实例处于栈顶
该模式下的目标Activity实例总是位于栈顶且值包含该Activity实例
目标Activity不存在:先创建一个Task,再创建Activity实例,存入该Task中
目标Activity存在:将目标Activity之上的实例移除Task栈,使得目标Activity实例处于栈顶
Android中有4种Activity的加载模式
Android采用Task来管理Activity
Task以栈的形式管理Activity:先启动的Activity被存放在栈底,后启动的Activity被存放在栈顶
启动一个应用时,Android就会创建一个Task
1.standard:标准模式
android:launchMode="standard"
默认加载模式,以这种模式加载,不会单独创建Task,会将新的Activity放在该应用原有的Task中,多次启动同一个Activity会有不同的Activity实例被放入Task中(这些实例的hashCode不同,但所在的Task ID是一样的)
2.singleTop模式
android:launchMode="singleTop"
如果要启动的目标Activity处于Task栈顶,则直接使用该栈顶的目标Activity
如果要启动的目标Activity不在栈顶,会重新创建一个目标Activity的实例并将其加载到Task栈顶(即使Task中存在该Activity实例,依然会创建,但是新的实例和原有实例的hashCode不同)
3.singleTask模式
android:launchMode="singleTask"
这种模式下的Activity在栈中只能有一个实例
Activity实例不存在:创建该Activity的实例,加入Task栈顶
Activity实例存在且位于栈顶:不做任何操作
Activity实例存在但不位于栈顶:将目标Activity之上的实例移除Task栈,使得目标Activity实例处于栈顶
4.singleInstance模式
android:launchMode="singleInstance"
该模式下的目标Activity实例总是位于栈顶且值包含该Activity实例
目标Activity不存在:先创建一个Task,再创建Activity实例,存入该Task中
目标Activity存在:将目标Activity之上的实例移除Task栈,使得目标Activity实例处于栈顶
相关文章推荐
- Android开发-简单的登陆界面
- Android UI界面开发基础
- 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建
- Android Studio快捷键20160406
- 安卓6.0.x 获取root权限
- Android的Widget的定时刷新
- Android Studio很卡,操作很不顺的点进来!
- Android开发之发送邮件功能的实现(源代码分享)
- android之LayoutInflater
- MSB3073 命令“platforms\android\cordova\clean.bat”已退出,代码为 2。
- Qt for Android开发中消除NDK的黑屏启动页面
- android大文件上传
- On Memory Leaks in Java and in Android.
- Android 引导使用说明、标签功能的封装库
- Android 操作数据库的框架——greenDAO的学习
- Android学习之CardView文档翻译
- Android的桌面小图标Widget的学习
- 开源图片加载库universal-image-loader使用
- Android开发之非Activity类型的Context启动一个目标Activity
- Android--绑定服务调用服务的方法