Activity之launchMode(运行模式)

一、Activity 的launchMode(运行模式)共有4种,分别是:standard,singleTop,singleTask,    singleInstance

1 、standard:(备注:standard是系统默认的启动模式。)

标准启动模式,每次激活Activity 时都会创建Activity,并放入任务栈中。如果启动此Activity的Intent中没有设置FLAG_ACTIVITY_NEW_TASK标志,则这个Activity与启动他的Activity在同一个Task中,如果设置了Activity请参考上面FLAG_ACTIVITY_NEW_TASK的详细说明,“launchMode”设置为"standard"的Activity可以被实例化多次,可以在Task中的任何位置,对于一个新的Intent请求就会实例化一次.

2 、singleTop:

如果在任务的栈顶正好存在该Activity 的实例,就重用该实例,而不会创建新的Activity 对象,不过它会调用onNewIntent()方法。如果栈顶部不存在就会创建新的实例并放入栈顶(即使栈中已经存在该Activity 实例,只要不在栈顶,都会创建实例)。如果启动此Activity 的Intent中没有设置FLAG_ACTIVITY_NEW_TASK标志, 则这个Activity 与启动他的Activity在同一个Task中, 如果设置了Activity 请参考上面FLAG_ACTIVITY_NEW_TASK的详细说明, “launchMode”设置为"singleTop"的Activity可以被实例化多次,可以在Task中的任何位置,对于一个新的Intent请求如果在Task栈顶,则会用栈顶的Activity响影Intent请求,而不会重新实例化对象接收请求,如果没有在栈顶,则会实例化一个新的对象接收Intent请求.

3 、singleTask:

如果在栈中已经有该Activity 的实例,就重用该实例(会调用实例的onNewIntent ())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。和s ingleTop在名字上即可看出区别,即s ingleTop每次只检测当前栈顶的activity是否是我们需要请求创建的,而singleTask则会检测栈中全部的Activity 对象,从上向下,如果检测到是我们所请求的则会消灭此Activity 对象上面的对象,直接把检测到的我们需要的Activity 置为栈顶。“launchMode”设置为" singleTask"的Activity总是在栈底,只能被实例化一次,它允许其它Activity压入"singleTask"的Activity 所在的Task栈,如果有新的Intent请求有此标志的Activity ,则系统会清除有此标志的Task栈中的全部Activity,并把此Activity显示出来.

4 、singleInstance:

在一个新栈中创建该Activity 实例,并让多个应用共享该Activity 实例。一旦这种模式的Activity实例存在于某个栈中,任何应用再激活这个Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。此启动模式和我们使用的浏览器工作原理类似,在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当前打开的浏览器中访问。此模式会节省大量的系统资源,因为他能保证要请求的Activity对象在当前的栈中只存在一个。“launchMode”设置为”singleInstance”的Activity总是在栈底,只能被实例化一次,不允许其它的Activity压入”singleInstance”的Activity 所在Task栈,即整个Task栈中只能有这么一个Activity .

时间: 2024-10-19 21:06:38

Activity之launchMode(运行模式)的相关文章

Activity 的 launchMode(加载模式)

在Androidmanifest.xml文件中可以给每隔Activity设置launchMode(加载模式)属性.该属性可以设置四种加载模式: <activity android:name="test.activity.MainActivity" android:launchMode="standard" /> 1.standard(默认) 1)从task中启动Activity时,该Activity的新实例总是在当前task中创建. 2)每次启动Acti

Android入门:Activity四种启动模式

Android入门:Activity四种启动模式 一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置: 启动模式有4种,分别为standard.singleTop.singleTask.singleInstance: 讲解启动模式之前,有必要先讲解一下“任务栈”的概念; 任务栈 每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity

Android开发学习之路--Activity之四种启动模式

后天终于可以回家了,马上就要过年了,趁着年底打酱油的模式,就多学习学习,然后记录记录吧.关于Activity已经学习了七七八八了,还有就是Activity的四种启动模式了,它们分别为,standard,singleTop,singleTask,singleInstance,根据名字也差不多可以理解这四种模式了: 1.standard:标准启动模式,默认情况下就是这个模式了,这个模式下启动的Activity会被多次实例化. 2.singleTop:这个模式下启动Activity的话,如果栈顶也是同

Activity的launchMode详细分析

在研究了Activity的启动过程后,我觉得很有必要对Activity的launchMode进行分析一下,因为到目前为止,我发现网上对launchMode的讲解都是通过实例讲解,看完了总是似懂非懂的感觉,并没有根本上理解launchMode的原理.这里我会从源码的角度讲解launchMode.相信大家会和我一样,看了源码之后就会有一种豁然开朗的感觉. Activity的启动模式一种有四种,分别如下: 1.standard 2.singleTop 3.singleTask 4.singleInst

Android四种Activity的加载模式(转)

建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型: http://www.cnblogs.com/ghj1976/archive/2011/04/28/2031586.html 其中对“Android的单线程模型”的描述,明白Activity的一些注意事项. Android Application Task Activities的关系  http://www.cnblogs.com/ghj1976/archive/2011/04/29/2

【转】Activity的launchMode分析 及 Intent.FLAG_NEW_TASK详解

Activity的启动模式共有四种,分别如下: 1.standard 2.singleTop 3.singleTask 4.singleInstance 这里我们分两种情况讨论上述四种启动模式:app内和app之间 首先讨论app内 standard:不论当前任务栈中是否存在该Activity,都会新建一个Activity,如 任务栈为A B,要启动B 那么任务栈为 A B B singleTop:如果当前要创建的Activity就在任务栈的顶端,那么不会创建新的Activity,仅仅调用Act

android开发艺术探索学习 之 结合Activity的生命周期了解Activity的LaunchMode

转载请标明出处: http://blog.csdn.net/lxk_1993/article/details/50749728 首先还是先介绍下Activity的launchMode.一共同拥有四种. 1.standard. 2.singleTop. 3.singleTask. 4.singleInstance. 第一种standard.就是无论怎么样每次启动都会创建一个新的实例.也就是系统默认的启动方式. 我们设置ActivityA的启动方式为standard.设置点击运行startActiv

[转]Android Activity的加载模式和onActivityResult方法之间的冲突

前言 今天在调试程序时,发现在某一Activity上点击返回键会调用该Activity的onActivityResult()方法.我一开始用log,后来用断点跟踪调试半天,还是百思不得其解.因为之前其他的Activity的LaunchMode都是Normal,没有特殊设定,这个Activity由于需求改成了singleTop.直到我确定没有一个地方是代码主动触发的,我才想到了跟Activity的LaunchMode是否有关. 探索 在Google上搜索android activity onact

Activity四种启动模式1

一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置: 启动模式有4种,分别为standard.singleTop.singleTask.singleInstance: 讲解启动模式之前,有必要先讲解一下"任务栈"的概念; 任务栈 每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序:比如Activity1--&