Activity的四种启动模式详解

Activity的启动模式在清单文件AndroidManifest.xml中的Activity属性中进行设置:

如:<activity

    android:name=".MainActivity"    android:launchMode="standard"/>

Activity的启动模式一共四种:

1、standard 模式  标准模式,如果不在清单文件中声明,系统会默认使用这种模式启动,大多情况下也都是使用这种模式启动。特点是:每一次都会创建一个新的Activity,这个新的Activity总是放在栈顶; 由于都创建新的Activity,比较耗资源。2、singleTop 模式  每当需要启动Activity时,系统首先会检查栈顶的Activity是否存在一样的Activity实例,如果存在,

则直接使用栈顶已存在的Activity,否则新建一个Activity。3、singleTask 模式  每当需要启动一个Activity时,系统会检查存放的栈中是否存在一样的Activity实例,如果存在,调用该实

例的newInstance()方法重用该Activity,并把他上面的Activity销毁掉,使其处于激活状态---栈顶,否则
就重新创建一个新的Activity实例。4、singleInstance 模式  每当需要启动一个Activity时,系统会检查栈中是否存在一样的Activity实例,如果存在,则会调用onNewIntent()给它开一个单间,即重新开一个栈存放.这种模式只会创建一次,即只会调用一次onCreate()方法,除非Activity被销毁。比较耗资源,并且使用该模式时会存在bug---调用startActivityForResult()时,会报错,我也不知道什么解决,最好别用。

附:Activity与栈1.栈的基本工作原理是先进后出,或者后进先出。2.Activity是由栈来管理的,每创建一个Activity,都会往栈中叠加,就像往一个箱子(假设箱子大小与书本恰好相同)里存放书本,先创建的放在栈底,最上面的是栈顶,只有栈顶的Activity是激活状态的。3.Activity的启动模式,其实是对栈进行管理/操作。



时间: 2024-11-20 01:28:46

Activity的四种启动模式详解的相关文章

Android Activity的4种启动模式详解(示例)

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5233269.html 先介绍下Android对Activity的管理,Android采用Task来管理多个Activity,当我们启动一个应用时,Android就会为之创建一个Task,然后启动这个应用的入口Activity(即<intent-filter.../>中配置为 MAIN和LAUNCHER的Activity). 因为Android并没有为Task提供API,因此我们无法真正去访问Task,只

详解Activity的四种启动模式

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Activity启动模式设置:<activity android:name=".MainActivity" android:launchMode="standard" /> Android总Activity的启动模式分为四种: Activity的四种启动模式:

转 Activity的四种启动模式和onNewIntent()

转自 http://blog.csdn.net/linghu_java/article/details/17266603 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name=".MainActivity" a

Activity的四种启动模式区别

(1) standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中. (2) singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例. (3)singleTask 如果在栈中已经有该Activity的实例,就重用该实例.重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈.如果栈中不存在该实例,将会创建新的实例放入栈中. (

Android Activity:四种启动模式,Intent Flags和任务栈(转自他人博客)

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.那各个页面跳转关系如何决定呢?如果启动了顺序启动了ABCD的Activiy,如何从D调回到B呢?下面讲述一下Acitivity的四种启动模式.讲解启动模式之前,有必要先讲解一下“任务栈”的概念; 任务栈 每个应用都有至少一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序:比如Activity1-->Activity2-->Act

Android之Activity的四种启动模式

当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中.Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置. 1. Standared模式(默认) 我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只要你创建了Activity实例,一旦激活该Activity,则会向任务栈中加入新创建的

Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式。

Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags(); 一.Android Activity 四种启动模式 lunchMode 在Manifest 配置文件中的属性如下: (1) android:launchMode="standard" (2)android:launchMode="singleTop" (3)android:launchMode="singleTask" (4)andro

安卓中Activity的四种启动模式

Activity的四种启动模式 (示例图) 1.standard  标准的启动模式,在回退栈中,每次访问启动的activity都是一个全新的Activity.   2.singleTop     栈顶单一,在回退栈中,如果打开的Activity就是栈顶的Activity, 将重用栈顶的这个Activity.   3.singleTask     栈内唯一,在回退栈中,如果打开一个栈中已存在的Activity,它会把这个Activity之上的所有Activity都杀死,从而保证栈内唯一.   4.

activity的四种启动模式详细分析

1.android中通过任务队列来管理activity 采用栈的结构就是后进先出 手机里面如果启动多个应用就会启动多个任务栈来管理对应的activity. 主要解决下面的问题:对应的四种启动模式: 1.界面1去启动界面2,在界面2中再去启动界面1,是新创建一个界面1的实例,还是使用后来栈中的已经存在的实例,这就和界面1的设置的模式有很大的关系. 标准的模式:每次去调用都会产生一个新的实例,比如当前activity,你在当前的activity中点击按钮再创建当前的activity,在任务栈就会存在