Activity启动相关事宜
来源:互联网 发布:贴纸特效软件 编辑:程序博客网 时间:2024/05/01 18:29
Activity启动相关事宜
1)任务栈的概念
问:一个手机里面有多少个任务栈?
答:一般情况下,有多少个应用正在运行,就对应开启多少个任务栈;
一般情况下,每开启一个应用程序就会创建一个与之对应的任务栈;
二般情况下,如launchMode为 singleInstance,就创建自己单独的任务栈;
2)任务栈的作用:
它是存放Activity的引用的,Activity不同的启动模式,对应不同的任务栈的存放;可通过getTaskId()来获取任务栈的ID,如果前面的任务栈已经清空,新开的任务栈ID+1,是自动增长的;
3)启动模式:
在AndroidManifest.xml中的<activity>标签中可以配置android:launchMode属性,用来控制Actvity的启动模式;
在Android系统中我们创建的Acitivity是以栈的形式呈现的:
①、standard:默认的,每次调用startActivity()启动时都会创建一个新的Activity放在栈顶;
②、singleTop:启动Activity时,指定Activity不在任务栈栈顶就创建,如在栈顶,则不会创建,会调用onNewInstance(),复用已经存在的实例
③、singleTask:在任务栈里面只允许一个实例,如果启动的Activity不存在就创建,如果存在直接跳转到指定的Activity所在位置,如:栈内有ABCD,D想创建A, 即A上的 BCD相应的Activity将移除;
④、singleInstance:(单例)开启一个新的任务栈来存放这个Activity的实例,在整个手机操作系统里面只有一个该任务栈的实例存在,此模式开启的Activity是运行在自己单独的任务栈中的;
4)应用程序、进程、任务栈的区别
①、应用程序:四大组件的集合在清单文件中都放在application节点下,对于终端用户而言,会将其理解为activity
②、进程:操作系统分配的独立的内存空间,一般情况下,一个应用程序会对应一个进程,特殊情况下,会有多个进程,一个应用程序会对应一个或多个进程。
③、任务栈:taskstack(back stack)后退栈记录用户的操作步骤,维护用户的操作体验,专门针对于activity而言的,只用于activity ,一般使用standard,其他情况用别的,
5)启动模式的演示
1、创建两个activity,布局中设置两个按钮,分别开启两个activity
第一、standard启动模式的:开启几个就会在任务栈中存在几个任务01和02都是存在于一个任务栈中的
第二、在清单文件中将02的启动模式改为singletop,此时02处于栈顶,就只会创建一个02的任务,再开启02,也不会创建新的
第三、将02的启动模式改为singletask,如果02上面有其他任务栈,就会将其他的清除掉,利用这个已经创建的02,当开启02的时候,即先将01清除,然后利用下面的02
第四、将02的启动模式改为singleinstance,可以通过打印任务栈的id(调用getTaskId()方法)得知,两个activity不在同一个任务栈中
若先开启三个01,在开启02,此时按返回键,会先一层一层清空01,最后再清空02
- Activity启动相关事宜
- 辞职相关事宜
- IHttpHandlerFactory IHttpHandlerx相关事宜
- msm8909相关事宜
- Activity启动相关属性
- 网站移植虚拟主机相关事宜
- nginx配置及其相关事宜
- Activity启动模式相关总结
- 关于开发人员申请苹果账号相关事宜
- cocos2d-x配置Android项目相关事宜
- 省委短信平台调测相关事宜
- PlayMaker自定义action的相关事宜
- 北京理工大学研究生毕业答辩相关事宜
- Android中横竖屏相关事宜
- 支付宝快捷登录相关事宜
- 关于开发人员申请苹果账号相关事宜
- 关于开发人员申请苹果账号相关事宜
- 申请微信支付相关事宜
- ListView与BaseAdapter
- HDU 1166 树状数组(点更新)
- 素数筛模板
- 抛出异常与栈展开(stack unwinding)
- Codeforces Round #345 (Div. 1)
- Activity启动相关事宜
- 【数据库】SQL查询强化篇
- 关于DNA 碱基序列检验的JAVA代码
- 执行上下文和执行上下文堆栈
- 程序员你会修电脑吗?
- CentOS安装Node.js
- linux(Ubuntu)中安装配置JDK
- 查找整数
- 给分类(Category)添加属性