第一行代码 第二章 Activity的启动模式
来源:互联网 发布:农村淘宝加盟费用 编辑:程序博客网 时间:2024/06/03 20:54
Activity的启动模式:standard模式、singleTop模式、singleTask模式、singleInstance模式。
一、在AndroidManifest.xml中通过给activity标签指定android:launchMode属性来选择启动模式。
1、standard模式
这是一种默认模式。即不需要指明启动模式。
在这种模式下,不管该活动是否已存在返回栈中,每次启动都会创建该活动的一个新实例。
如:活动A中启动活动A,在启动活动A。此时的返回栈中有三个活动A的实例,需要按三次返回键才能退出程序。
(每次启动A都会创建新的活动A,即每次都会运行onCreate())
2、singleTop模式
android:launchMode=”singleTop”。
这种模式下,系统会先判断在返回栈中的栈顶是否已经是该活动的实例。如果是,则直接使用,不再创建新的活动实例;如果不是,系统还是会创建新的实例。
如:活动A设定为singleTop模式,在活动A中启动活动A,在启动活动A,此时的返回栈中只有一个活动A的实例,所以只需要按一次返回键就能退出程序。
(因为A已经是栈顶了,所以每次启动不会创建新的活动A)。
如:活动A设定为singleTop模式,在活动A中启动活动B,在活动B中启动活动A。此时的返回栈中有三个实例,分别为A->B->A,所以需要按三次back键才能退出程序。
(当活动A启动活动B时,返回栈的栈顶是活动B。当活动B启动活动A时,由于此时的栈顶不是活动A,所以还是会创建活动A。)
3、singleTask模式
android:launchMode=”singleTask”。
在这种模式下,系统会先判断在返回栈中是否存在该活动的实例。如果不存在,则创建一个新的活动实例;如果已存在,则直接使用,并将该活动之上的所有活动都移出栈。
如:活动A设定为singleTask模式,在活动A中启动活动B,在活动B中启动活动A。此时的返回栈中只有一个活动A的实例,所以按一次back键就能退出程序。
(当活动B启动活动A时,活动B被移出返回栈,即会运行活动B的onDestroy(),活动A重新成为栈顶活动,从onRestart()中恢复)
4、singleInstance模式
android:launchMode=”singleInstance”。
在这种模式下,系统会另外启用一个新的返回栈来管理这个活动,而且这个返回栈中只有这一个活动的实例。这种模式可解决共享活动实例的问题。
如:活动B设定为singleInstance模式,在活动A中启动活动B,在活动B中启动活动C。此时存在两个返回栈;一个栈的实例为:A->C;另一个栈的实例为:B;所以需要按三次返回键才能退出程序。
(第一次按back键时,会返回活动A,再按一次back键时,返回活动B,再按一次back键,退出程序。)
二、通过Intent的setFlags()来启动
setFlags(),接收一个参数。当传入的参数为:
1、Intent.FLAG_ACTIVITY_NEW_TASK
它是默认的跳转类型,它会重新创建一个新的Activity,如果不去设置android:taskAffinity 属性,就和标准模式一样了启动一个新的Activity。
2、FLAG_ACTIVITY_SINGLE_TOP
此种方式就相当于启动模式中的singletop
3、FLAG_ACTIVITY_CLEAR_TOP
此种方式就相当于启动模式中的SingleTask
4、FLAG_ACTIVITY_NO_HISTORY
此种方式就是说用这个FLAG启动的Activity,一旦退出,它不会存在于栈中,
比方说!原来是A,B,C这个时候再C中以这个FLAG启动D的,D再启动E,这个时候栈中情况为A,B,C,E。
- 第一行代码 第二章 Activity的启动模式
- 第一行代码 第二章 Activity
- 第一行代码 第二章 Activity的生命周期
- 第一行代码学习笔记-第二章 探究活动-4.活动的启动模式
- Android Studio 手动创建活动(Activity) 第一行代码 第二章
- 读书笔记 第一行代码 第二章Activity相关
- 启动Activity的最佳写法--《第一行代码Android》
- 第一行代码2.5-活动的启动模式
- 活动的四种启动模式(第一行代码总结)
- 《第一行代码》 随手笔记——第二章 Activity 活动
- 第一行代码系列第二章——手动创建activity
- 第一行代码系列第二章——在activity中使用Toast
- 第一行代码_第二章
- 第一行代码学习笔记 第二章
- 《第一行代码》第一章、第二章笔记
- 第一行代码Android第二章读书笔记
- 第一行代码Android-------Activity
- 第一行代码,Activity部分
- Codeforces 816 -B. Karen and Coffee
- 手把手教你写Dockerfile, 附赠MongoDB和Nginx Dockerfile编写实例
- vim代码块对齐
- io(二)
- 多线程(5)同步
- 第一行代码 第二章 Activity的启动模式
- Hibernate Session一级缓存理解
- 关于从前端开发转入测试岗位的一些总结和感悟-------写在测试岗位三年之际
- lambda表达式
- CSS之media Query
- MIT与谷歌专家合著论文:机器学习和神经科学的相互启发与融合
- Maven 的坐标和依赖
- Storm并发模型及ACK机制处理
- TCP套接字编程