我对standard、singleTop、singleTask和singleInstance四种Activity启动模式的理解

之前自学android的时候,单从视频和书本上对这四种启动模式仅仅有了初步的字面上的理解。最近实战了下,也对这四种启动模式有了比较清晰的概念。

首先说下什么是Activity,按照我的理解,我们在手机上看到的每一个页面都是一个Activity,包括系统的桌面,也是一个Activity。

要启动一个Activity有四种模式:standard(标准启动模式)、singleTop、singleTask、singleInstance。

注: Aty1_1和Aty2_1为两个不同的Activity,Aty1_1和Aty1_2为同一个Activity中的不同实例。

1. standard

不同的Activity在同一个栈中,

每次创建新实例的时候,新实例便会堆放到栈顶。

当点返回键的时候,便会从栈顶按顺序将实例移除栈。直至栈为空则退回到桌面。

2. singleTop

不同的Activity在同一个栈中。

① 如果此时Aty1的实例在栈顶,此时再创建一个新的Aty1并不会成功。

② 如果Aty_1不在栈顶,此时再创建一个Aty1的实例,会产生一个新的Aty1实例到栈顶。

当点返回键的时候,便会从栈顶按顺序将实例移除栈。直至栈为空则退回到桌面。

3. singleTask

不同的Activity在同一个栈中。

① 如果此时Aty1的实例在栈顶,此时再创建一个新的Aty1并不会成功。

② 如果Aty_1不在栈顶,此时再创建一个Aty1的实例,页面会返回到任务栈中存在的Aty1的实例,并将Aty1上面所有的实例移出栈。

当点返回键的时候,便会从栈顶按顺序将实例移除栈。直至栈为空则退回到桌面。

4. singleInstance

不同的Activity 处于不同栈中

① 如果此时Aty1的实例在栈顶,此时再创建一个新的Aty1并不会成功。

② 如果此时Aty2的实例还未被创建,则创建的Aty2的实例时会存放到一个新的任务栈中。

③ 如果此时Aty1的实例已存在且我们在Aty2的页面中创建新的Aty1实例时,则不会创建新的Aty1实例,而是页面跳转到原来任务栈中存在的Aty1的实例,但存放Aty2实例的任务栈仍然存在

当点返回键的时候,便会依次销毁相应的任务栈,直至任务栈数为空则退回到系统桌面。

以上是我对安卓四种Activity启动模式的理解,如果有不对的地方还望指正。

时间: 2024-12-14 04:53:44

我对standard、singleTop、singleTask和singleInstance四种Activity启动模式的理解的相关文章

Android activity四种基本启动模式

standard:默认的模式,每次启动会新创建一个activity对象 singleTop:在当前任务栈中,判断栈顶是否为当前的activity,如果是,就直接使用,如果不是,就会创建新的activity放入栈顶 singleTask:在当前任务栈中,判断栈里是否存在当前的activity,如果不存在,就会创建新的activity入栈,如果存在,会把该activity之上所有activity清理出栈,显示当前activity singleInstance:新创建一个任务栈,放入新创建的activ

【转】虚拟机四种网络连接模式比较

转载地址:http://blog.csdn.net/terryzero/article/details/6016130 虚拟机一直用,但选择网络时的四种模式总是搞不清楚,只知道选择bridge最好用.为了能更深入了了解,查询了些资料,总结如下 第一种 NAT模式 Vhost访问网络的所有数据都是由主机提供的,vhost并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Vhost的存在. 虚拟机与主机:虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机. 虚拟机与其他主机:虚拟

singleTop和singleTask有什么区别?(活动 Activity 四种加载模式)

singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例.(注意是栈顶,不在栈顶照样创建新实例!) singleTask模式:当intent到来,需要创建singleTask模式Activity的时候,系统会检查栈里面是否已经有该Activity的实例.如果有直接将intent发送给它. Activity的四种加载模式: 1.standard :系统的默认模式,一次跳转即会生成一个新的实例.假设有一个activit

Activity四种加载模式

android activity四种加载模式,有 >>>standard: 标准模式,这是默认的加载方式 >>>singleTop : task顶单例模式 >>>singleTask : Task内单列模式 >>>singleInstance :全局单列模式 <1>standard: 标准模式,这是默认的加载方式 public class StandardTest extends Activity { @Override

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的四种加载模式介绍

  四种加载模式的介绍: a) Standard : 系统默认模式,一次跳转即会生成一个新的实例:    b) SingleTop : 和 standard 类似,唯一的区别就是当跳转的对象是位于栈顶的activity时,程序将不会生成一个新的activity实例,而是直接跳到现在存于栈顶的那个activity实例:    c) SingleTask: singleTask 模式和后面的singleInstance 模式都只是创建一个实例:该模式下,无论调转的对象是不是位于栈顶的activity

Activity的四种加载模式

Activity的加载模式是在清单文件AndroidManifest.xml文件中进行设置 <activity android:name="...." android:label="@string/app_name" android:launchMode="singleTask"(Activity的加载模式) android:theme="@android:style/Theme.Light.NoTitleBar" &g

Activity的四种加载模式(附:Intent标记位)

Activity的加载模式是在清单文件AndroidManifest.xml文件中进行设置 <activity android:name="...." android:label="@string/app_name" android:launchMode="singleTask"(Activity的加载模式) android:theme="@android:style/Theme.Light.NoTitleBar" &g

转载 android activity的四种加载模式

Activity的四种加载模式 -- singleTask 和 singleInstance模式 2011-11-02 21:23:30 分类: 嵌入式 Activity的启动模式可以通过AndroidManifest.xml文件中的<activity>元素的属性来指定,一共有4中模式:   <activity android:name="ActivityMain" android:launchMode="singleTask"></a