Android -- 启动模式

Android的启动模式分为四种:

  • standard

模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。

  • singleTop

如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。

  • singleTask

如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。

  • singleInstance

在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。

standard                                                                                   

standard是系统默认的启动模式,每次创建都是在堆上放一个新的Activity。

这里就不多介绍了。

singleTop                                                                                

每次使用新的Activity时会自动检测栈顶的当前Activity是否是需要引用的Activity,如果是则直接引用此Activity,而不会创建新的Activity。

<activity
            android:name=".Activity2"
            android:label="singleTop"
            android:launchMode="singleTop" >
        </activity>

其效果是最顶层是singleTop的话,再点击singleTop按钮不会创建新的Activity。

singleTask                                                                               

此启动模式和singleTop在名字上即可看出区别,即singleTop每次只检测当前栈顶的Activity是否是我们需要请求创建的,而singleTask则会检测栈中全部的Activity对象,从上向下,如果检测到是我们所请求的则会消灭此Activity对象上面的对象,直接把检测到的我们需要的Activity置为栈顶。

<activity
            android:name=".Activity4"
            android:launchMode="singleTask"
            android:label="singleTask" >
        </activity

其效果是点击singleTask之后点击多个standard,再点singleTask,那些standard都没了。

singleInstance                                                                        

此启动模式和我们使用的浏览器工作原理类似,我们都知道在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当前打开的浏览器中访问。此模式会节省大量的系统资源,因为他能保证要请求的Activity对象在当前的栈中只存在一个。

我是天王盖地虎的分割线                                                                

源码图:

源代码:http://pan.baidu.com/s/1dD1Qx01

启动模式.zip

转载请注明出处:http://www.cnblogs.com/yydcdut

Android -- 启动模式

时间: 2024-10-10 15:44:03

Android -- 启动模式的相关文章

Android启动模式launchMode

在Android里,有4种Activity的启动模式并分别介绍下: standard singleTop singleTask singleInstance AndroidManifest.xml配置android:launchMode属性 1.standard: 默认启动模式. 每次都会创建一个实例,每个任务栈里面都可以使用. 2.singleTop: 系统会按照singleTop启动模式处理跳转行为.跳转时系统会先在栈结构寻找是否有一个Activity实例正位于栈顶,如果有则不在生成新的,而

Android启动模式以及IntentFilter匹配规则

一.Android的LaunchMode 共有四种启动模式 1.standard 标准启动模式,Activity的默认启动模式.Activity的每次启动都创建新的示例 2.singleTop 栈顶复用模式,当启动的Activity处于栈顶时,不再创建新的活动实例.将回调onNewIntent方法. 3.singleTask 栈内复用模式,当启动的Activity在一个栈中存在实例,不再创建新的实例,弹出在其之上的所有实例将其置于栈顶.同样会回调onNewIntent方法. 4.singleIn

android启动模式2

Android中的启动模式(下) 在这篇文章中,我会继续跟大家分享有关于Android中启动模式的相关知识.当然,如果对这个启动模式还不完全了解或者没有听过的话,可以先看看我之前写的有关于这个知识点的入门篇Android的启动模式(上).好了,言归正传,在上一篇已经介绍过,activity在栈中默认不能重排,因此,应用中的一个activity可能被多次实例化并且压入同一个栈中,如图所示: 如果此时使用back键返回,activity的每个实例都将会按照打开的顺序重新出现.这势必会导致用户生体验效

Android启动模式之singleinstance的坑

前言 在实际应用中,使用singleinstance启动模式时,会遇到一些奇奇怪怪的问题.Android有四种启动模式,分别是standard,singleTop,singleTask,singleInstance.下面分别简单的介绍下这四种启动模式的作用. standard Android 默认的一种启动模式.不需要为activity设置launchMode.这种启动模式简单的来说就是当你startActivity的时候,他就创建一个. singleTop 这种模式模式从字面意思就能看得出来,

Android启动模式(三种)

1,标准启动模式 通过任务栈,每点一次button,将每一个实例都压入,然后点返回键时候,就弹出之前压入的实例. 测试代码:通过创建一个button和textView来显示本身的TastId和实例的ID 1 public class MainActivity extends AppCompatActivity { 2 3 private TextView tv; 4 @Override 5 protected void onCreate(Bundle savedInstanceState) {

Android -- 启动模式(标准启动模式)

我们先来运行一段程序,看看效果. 看下图,taskID=15,实例*89270结尾 再点击刷新按钮,如下图,发现taskID没有变,但是实例变了*bead0 在刷新一次,同上,实例变成*d0348. 下面,我们点击返回按钮,看下图 再点击返回按钮 看完上面一组操作,我们是否发现,刷新后taskid没有变化,但是实例在不断变化,当点击返回按钮时,返回的是最近生成的一个实例,这里有一个栈的概念,先进栈的实例后出(任务栈),也就是先进后出,后进先出的原理,这个就是标准启动模式的原理. 配置启动模式代码

Android -- 启动模式(singleTop启动模式)

了解了标准的启动模式,是使用任务栈,先进后出,后进先出的模式进行启动的,下面我们来看另外一个singleTop启动模式. 1.我们来看图,这个页面我增加了2个按钮,分表转A页面和B页面,先来看A,我们的taskid=18,实例=*f648 2.点击[跳转A页面Activity],发现了吗,没有变化,实例还是*f648 3.我们点击[跳转B页面Activity],taskid=18,实例=*54f0,新生成了个实例. 4.我们再点击[跳转A页面Activity],实例变了,和我们第2步实例不一样了

Android -- 启动模式(singleTask启动模式)

下面我们将A的Activity的启动模式改成singleTask. 1.看图,我们的A页面taskid=23,实例=*82a8 2.我们点击[跳转B页面Activity]按钮,实例=*2428 3.我们点击[跳转A页面Activity]按钮,实例=*82a8,发现了吗,实例变成了第一步骤的实例. 4.这时候我们点击返回按钮,应用程序会直接退出.是否有所发现,我们在第三步操作的时候,任务栈弹出了B实例,显示了A的实例.这就是singleTask启动模式的特点. 可以简单理解,每个Activity在

Android -- 启动模式(singleInstance启动模式)

1.看图讲解,进入A页面,taskid=26 实例=*b2770 2.点击[跳转B页面Activity],taskid=27,实例=*a178 3.点击[跳转A页面Activity],taskid=26 实例=*b2770 4.看了图应该可以分析出来啦,每个Activity一个任务栈,并且每个任务栈中就一个实例.这就是singleInstance的启动模式