Activity的 LaunchMode和Flags
来源:互联网 发布:淘宝授权书怎么找哇 编辑:程序博客网 时间:2024/05/16 07:39
Activity的启动模式分为四种, standard(默认),SingleTop,SingleTask,SingleInstance
standard模式是Activity默认的启动模式,表示 每次启动Activity就会创建一个新的实例,无论这个实例是否存在。它的onCreate(), OnStart(), OnResum()都会被调用。同时,谁启动了这个Activity,这个Activity就会在谁的栈中,因此我们不能使用ApplicationContext去启动standard模式的Activity,因为非Activity类型的Contex没有任务栈。这时我们需要指定FLAG_ACTIVITY_NEW_TASK ,去创建一个新的栈在创建此Activity。
singleTop:栈顶复用模式,即启动Activity时会现在当前栈中查找是否存在此Activity,若此Activity已经在栈顶则不会再次创建新的实例,即它的onCreate(),onStart()不会被调用,而是调用它的onNewIntent方法。如果此Activity不在栈顶,则会重现创建此Activity。比如目前栈中有ABCD四个Activity,D位于栈顶,此时再次启动D,若D的启动模式为SingleTop,那么栈内依然为ABCD;若D的启动模式为standard,那么栈内的情况为ABCDD。若栈中情况为ABCD,此时要启动B,无论B的模式是singleTop还是standard,栈内的情况都为ABCDB。
singleTask:栈内复用模式,和singleTop不同的是,只要此Activity所需栈中存在此Activity都不会再次创建,同样会调用OnNewIntent方法。Activity所需栈是针对singleTask来说的,一般Activity所在的栈默认是App的包名,使用singleTask时我们可以通过TaskAffinity来指定Activity所需栈。同时,singleTask会自带clearTop属性,例如,a栈中有ABC三个Activity,b栈中有D,ABC的所需栈为a,A的启动模式为singleTask,
此时在D中启动A,那么因为A已存在a中,根据“先进后出”原则,A想要到栈顶,就必须把BC出栈。现在的情况就变成a栈中只剩下A,此时按下back键就会返回到桌面。
singleInstance:单实例模式。是singleTask的加强版,具有singleTask的属性,特殊的是此Activity会单独的在一个任务栈中,也就是说只要此栈不被销毁,此Activity都不会被再次创建。因为栈中只有一个Activity,所以此Activity也就没有clearTop的属性了。
另外在说一下Intent中的Flag
FLAG_ACTIVITY_NEW_TASK 指定Activity的启动模式为singleTask
FLAG_ACTIVITY_CLEAR_TOP 要启动的Activity所在的栈的Activity会被清空
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 具有此标记的Activity不会出现在历史记录中,既不能返回此Activity 。等同于android:excludeFromRecents=”true”
- Activity的 LaunchMode和Flags
- Android的LaunchMode,Intent flags和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity的LaunchMode和taskAffinity
- Activity LaunchMode 与 Intent Flags 揭秘
- Activity LaunchMode 与 Intent Flags 揭秘
- activity的启动模式和flags
- Activity的flags和task总结
- Activity的LaunchMode和taskAffinity(经典)
- HDU 5695 拓扑排序+贪心
- zabbix系列(四)Zabbix3.0.4添加对Nginx服务的监控
- 使用Cmake时 C++添加命令行参数"-std=c++0x"
- Aizu 2224 (最大生成树,并查集)
- 内存分配 指针和数组对比
- Activity的 LaunchMode和Flags
- android 自定义View学习总结-继承自ViewGroup
- AJAX学习1.1
- 二叉树两结点的最低共同父结点
- Unity Shader Example 17 (Skybox)
- 防止手机进入休眠状态而导致程序不能正常运行——WakeLock
- Gibbs Sampling\吉布斯采样(一)
- openpyxl - 一些简单用法
- 自定义轮播图SlideView