Activity 的 launchMode(加载模式)

在Androidmanifest.xml文件中可以给每隔Activity设置launchMode(加载模式)属性。该属性可以设置四种加载模式:

<activity android:name="test.activity.MainActivity" android:launchMode="standard" />

1、standard(默认)

1)从task中启动Activity时,该Activity的新实例总是在当前task中创建。

2)每次启动Activity,都会创建该Activity类的新实例。

3)一个task中可以存在同一Activity的多个实例。

4)一个Activity的多个实例可以出现在多个task栈中。

2、singleTop

1)如果启动模式设置为singleTop的Activity实例未处于栈顶,则其表现与启动模式设置为standard的Activity的表现一致

2)如果启动模式设置为singleTop的Activity的实例位于任务栈的栈顶,则不会创建该Activity的新实例。只是调用位于栈顶的该Activity实例的onNewIntent方法,将新的intent传递给该实例。

3、singleTask

1)设置为singleTask的Activity,具有全局唯一性,在Android系统中只能创建该Activity的一个实例。

2)如果启动s设置为singleTask的Activity时,已经存在该Activity的实例,则将该实例之上的所有Activity实例释放,将该实例重新带回到栈顶,并调用器onNewIntent方法,将新的intent传递给该实例

3)在创建设置为singleTask模式的Activity的实例时,如果当前task的taskAffinity与该Activity的taskAffinity一致,则直接在当前task中创建;

如果当前task的taskAffinity值与该Activity的taskAffinity不一致则在新的任务中创建该Activity的实例。

4、singleInstance

1)当创建设置为singleInstance模式的Activity时,总是在新的任务中创建

2)设置为SingleInstance模式的Activity,具有全局唯一性。在Android系统中只能存在该Activity的一个实例

3)设置为singleInstance模式的Activity,总是单独在一个task中存在也就是说在该Activity所在的task栈中不可能存在其他的activity

原文地址:http://blog.csdn.net/guomeijuan916/article/details/8121468

时间: 2024-12-20 20:39:23

Activity 的 launchMode(加载模式)的相关文章

Android中Activity四种加载模式

Activity四种加载模式 我们知道在配置Activity的时候可以指定android:lauchMode属性,该属性用于配置该Activity的加载模式,概述行支持以下四种: 1.standard: 标准模式,这是默认的加载模式. 2.singleTop: Task顶单例模式. 3.singleTask: Task内单例模式. 4.singleInstance: 全局单例模式. 那么Activity为什么需要制定加载模式呢? 由于在Android上启动一个应用后,系统会自动的创建一个属于该应

Activity四种加载模式(解释的非常好)

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity.可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity. 这需要为Activity配置特定的加载模式,而不是使用默认的加载模式. 加载模式分类及在哪里配置 Activity有四种加载模式: standard singleTop singleTask singleInstance 设置的位置在AndroidManifest.xml文件中activity元素的

android launchMode加载模式和intent flag

ApplicationTask和Process的区别与联系 Application task process 四种加载模式 standard模式 singleTop模式 singleTask模式 singleInstance模式 SingleTask和SingleInstance区别 实例 startActivityForResult如果被启动activity加载模式为SingleTask和SingleInstance 使用Intent标志 FLAG_ACTIVITY_NEW_TASK FLAG

Activity四种加载模式

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

我的Android进阶之旅------&gt;Android Activity的singleTask加载模式和onActivityResult方法之间的冲突

今天调试一个bug的时候,情景如下: 一个Activity A,需要用startActivityForResult方法开启Activity B.Activity B的launch mode被设置为singleTask,那么在Activity B开启之后的瞬间(未等B返回任何result),Activity A中的onActivityResult方法就会被调用,并且收到一个RESULT_CANCEL的request code. 然后在ActivityB中做了一些逻辑之后,在Activity B通过

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

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

Activity详解四 activity四种加载模式

先看效果图: 1概述 Activity启动方式有四种,分别是: standard singleTop singleTask singleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大量重复的Activity等问题. 设置Activity的启动模式,只需要在AndroidManifest.xml里对应的<activity>标签设置android:launchMode属性,例如: <activity android:name=".A1&

Android中Activity的LauchMode(加载模式)

1.standard模式:一个task有多个Activity,一个Activity可以被实例化多次,可以放在不同的task中. 2.singleTop模式:该Activity在栈顶,同时收到启动该Activity的intent消息,该Activity不用再创建实例.直接调用栈顶实例.比如:ActivityA启动ActivityB,在A中有一个定时器隔十秒再启动ActivityB. 3.singleTask只有一个实例,要调用必须将其他栈顶元素的实例毁掉. 从上面看了只有A能调用B,而且A再次调用

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