Activity的启动模式总结
<activity android:name="ActivityMain" android:launchMode="singleTask"></activity>
standard
singleTop
singleTask
singleInstance
这4中模式又分两类,standard和signleTop属于一类, singleTask和signleInstance属于另一类。
standard和singleTop属性的 Activity 的实例可以属于任何任务(Task),并且可以位于Activity堆栈的任何位置。比较典型的一种情况是,一个任务的代码执行 startActivity(),如果传递的 Intent 对象没有包含 FLAG_ACTIVITY_NEW_TASK 属性, 指定的 Activity 将被该任务调用,从而装入该任务的Activity 堆栈中。 standard和singleTop的区别在于:standard模式的Activity在被调用时会创建一个新的实例,所有实例处理同一个 Intent对象;但对于singleTop模式的Activity,如果被调用的任务已经有一个这样的Activity 在堆栈的顶端,那么不会有新的实例创建, 任务会使用当前顶端的Activity实例来处理Intent对象,换句话说,如果被调用的任务包含一个不在堆栈顶端的 singleTop Activity, 或者堆栈顶端为 singleTop 的Activity的任务不是当前被调用的任务,那么,仍然会有一个新的Activity对象被创建。
singleTask 和 singleInstance模式的Activity 仅可用于启动任务的情况, 这种模式的Activity总是处在Activity堆栈的最底端,并且一个任务中只能被实例化一次。两 者的区别在于:对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动; 对于 SingleTask模式的Activity,它在堆栈底端,其上方可以有其他Activity被创建, 但是,如果发给该Activity的Intent对象到来时该Activity不在堆栈顶端,那么该Intent对象将被丢弃,但是界面还是会切换到当前的Activity。
在多Activity开发中,有可能是自己应用间的activity 跳转,或者夹带其他应用的可复用activity。可能会希望跳转到原来某个activity实例,而非产生多个重复的activity。我们可借助 activity 四种启动模式来实现不同的需求:
standard 默认模式 --------- 来了intent,每次都创建新的实例。
singleTop -------- 来了intent, 每次都创建新的实例,仅一个例外:当栈顶的activity 恰恰就是该activity的实例(即需要创建的实例)时,不再创建新实例。这解决了栈顶复用问题,想一想,你按两次back键,退出的都是同一个activity,这感觉肯定不爽。
singleTask ---------- 来了intent后,检查栈中是否存在该activity的实例,如果存在就把intent发送给它,否则就创建一个新的该activity的实例,放入一个新的task栈的栈底。肯定位于一个task的栈底,而且栈中只能有它一个该activity实例,但允许其他activity加入该栈。解决了在一个task中共享一个activity。
singleInstance ----------- 肯定位于一个task的栈底, 并且是该栈唯一的activity。解决了多个task共享一个activity。
Activity的启动模式总结的更多相关文章
- 关于activity的启动模式
在Android中每个界面都是一个Activity ,界面的切换实际上是对不同Activity实例化的过程.而启动模式就决定Activity启动运行方式. 1.设置方式它是在主配置文件中,Activi ...
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...
- android Activity的启动模式与flag的见解
最近做一个安卓项目,想要实现的效果就是:当打开一个按钮的时候,启动了一个A功能,当用户返回到桌面再继续进去的时候,不过之前在哪个Activity,都会先跳转到A功能的那个界面,当用户点击返回的时候,再 ...
- android Activity的启动模式
Android中Activity启动模式详解 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启 ...
- Activity的启动模式(android:launchMode)
在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: ...
- 4种activity的启动模式
在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: ...
- Activity的启动模式及回退栈的概念
Activity的启动模式 standard 正常模式 在创建一个新的activity的时候,直接在栈顶创建一个新的activity singleTop 顶部单个 在创建一个新的activity的时候 ...
- Activity 的启动模式
好久没用过那几种activity的启动模式了,如今看到singletop竟然傻了眼,完全忘记了这几种启动模式的区别!隧将两年前的总结翻出来,通读一遍那晦涩难懂的记录,又理解了一遍,在以前记录的基础上, ...
- Activity LauchMode启动模式(转载)
转载于:http://www.cnblogs.com/plokmju/p/android_ActivityLauncherMode.html 在一个Android应用中,不可避免的会包含多个Activ ...
- Android开发艺术2之Activity的启动模式
Activity是Android的四大组件之一,他的重要性毋庸置疑,对于这么重要的一个组件,我们首先要知道这些都是由系统进行管理和回调的,要理解Activity的启动模式,我们首先来了解一下Andro ...
随机推荐
- Vases and Flowers
hdu4614:http://acm.hdu.edu.cn/showproblem.php?pid=4614 题意:给你n个花瓶,然后有两种操作:1从a开始选择b个花瓶,放进花,输出左端点,右端点 2 ...
- linux zip 命令详解
功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时 ...
- MongoDB实战指南(一):大数据与云计算
1.1 什么大数据 具体来说,大数据技术涉及到数据的创造,存储,获取和分析,大数据的主要特点有下面几个: 数据量大.一个典型的PC机载2000年前后其存储空间可能有10GB,今天facebook一天增 ...
- [jobdu]树的子结构
判断一棵树B是否是A的子树,对A做DFS,然后不断判断是否和B相同. 其实也可以不对A做DFS,直接遍历A中的每个节点和B做树的比较就行了. #include <iostream> #in ...
- QT带OpenGL与不带的区别,QT5是一个伟大的框架,短时期内根本不会有替代者
你好 , 我Qt的初学者 , 我在官网下载Qt时感觉很迷茫 , 不知道要下载哪个, 麻烦你写他们之间的不同点:Qt 5.2.0 for Windows 32-bit (MinGW 4.8, OpenG ...
- datetime 和 smalldatetime
用于表示某天的日期和时间的数据类型. datetime 和 smalldatetime 表示某天的日期和时间. 数据类型 范围 精确度 datetime 1753 年 1 月 1 日到 9999 年 ...
- 146. LRU Cache
题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- DesignPatterns
1.设计模式,说明工厂模式. 总共23种,分为三大类:创建型,结构型,行为型 创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Bui ...
- cocos2d-x 2.2 wp8 开发手记
最近有朋友问我有没有搞过 wp8 的cocos2dx开发 回复:额,没有.(感觉超没面子对方是妹子 = = ) 本着帮妹子试试的态度 就开始了 今天工作 第一我印象中wp8 开发必须要用 vs20 ...
- JAVA - Blowfish加密出现java.security.InvalidKeyException: Illegal key size 解决方案
最近用java进行一个blowfish的加密算法,但是在我们的eclipse上报出Illegal key size的错误.google后发现原因是:ymmetricDS加密symmetric.prop ...