Android启动模式
来源:互联网 发布:mysql with cube 编辑:程序博客网 时间:2024/05/17 04:52
1、Android启动模式的作用
android启动模式是为了控制系统的任务栈,从而实现控制系统activity的返回行为,系统中定义的启动模式分为四类:standard,singleTop,singleTask,singleInstance。
在了解系统启动模式之前我们必须清楚任务栈的概念,任务是一系列行为的目的,栈就是这一系列行为的排列方式,所以任务是以栈的方式组织的一系列行为的集合,在android系统中行为即activity页面。
2、四种启动模式介绍:
2.1、standard启动模式
standard为系统的默认启动模式,系统每启动一个activity都会重新创建一个实例(不管这个实例是否已经存在),并将其加到任务栈中。
2.2、singleTop启动模式
栈顶复用,当要启动的activity位于当前任务栈的栈顶,那么此activity不会重新创建,而是复用这个栈顶activity,并调用它的onNewIntent()方法。当要启动的activity不是栈顶元素时,则按照系统的默认行为进行处理。
2.3、singleTask启动模式
栈内复用,这是一种单实例模式,当任务栈中存在这个activity的实例是,那么系统不会重新创建这个activity,而是调用onNewIntent()方法,同事singleTask启动模式默认具有clearTop的效果,所以当任务栈中存在这个activity,但不是栈顶元素时,那么位于它之上的所有activity都会出栈。
2.4、singleInstance启动模式
单实例模式,这是一种加强的singleTask,它除了具有singleTask的所有特性之外,还加强了一点,那就是这种模式的activity只能单独位于一个任务栈中,所以当后续再次启动这个activity是,会复用之前的任务栈而不会重新创建。
3、activity如何寻找所需要的任务栈
首先我们需了解一个参数:TaskAffinity,可以翻译为任务相关性,默认情况下这个值为应用的包名,这个值可以在AndroidManifest文件中修改,TaskAffinity主要和singleTask或者allowTaskReparenting配对使用,在其他情况下没有意义,待启动的activity会运行在名字和TaskAffinity相同的任务栈中。
默认情况下:待启动的activity是进入启动它的activity的任务栈中
4、activity的常用flag
FLAG_ACTIVITY_NEW_TASK:这个标记的效果和singleTask启动模式相同。
FLAG_ACTIVITY_SINGLE_TOP:这个标记的效果和singleTop启动模式相同.
FLAG_ACTIVITY_CLEAR_TOP:具有次标记的activity,当它启动的时候在同一个任务栈中所有位于它之上的activity都要出栈,这个标记一般会和singleTask一起使用,在这种情况下如果被启动的activity存在,那么系统会调用它的onNewIntent()方法。如果被启动的activity是标准启动模式,那么连同它和它之上的activity都要出栈,前面介绍过singleTask默认具有此标记。
- android Activity启动模式
- Android Activity启动模式
- android 启动模式
- Android 启动模式
- android中四种启动模式
- android ics 启动模式
- android启动模式
- android启动模式
- Android启动模式分析
- Android Activity启动模式
- android 启动模式(二)
- android 启动模式
- android activity 启动模式
- android 启动模式
- Android的启动模式
- android的启动模式
- Android - Activity - 启动模式
- android Activity启动模式
- PAT L2-003. 月饼 C++
- 矩阵乘法
- git基本操作--删除文件和移动文件
- 【C++】内存管理方式
- centos7 安装配置solr tomcat8单机版
- Android启动模式
- Examination 20170318
- 双系统安装Windows10+Ubuntu
- ubuntu用Ctrl+L将file地址栏/导航栏 显示模式 切换为全路径, 如何恢复原模式呢?
- 0318
- .jsp文件在tomcat运行,提示 Attribute value request.getParameter("name") is quoted with " which must be escap
- maven 中scope含义说明
- (C++基础)在32,64位系统下各类型的大小
- TokuDB性能测试报告