详解Activity的四种启动模式

  在Android中每一个界面都是一个Activity,切换界面操做实际上是多个不一样Activity之间的实例化操做。在Android中Activity的启动模式决定了Activity的启动运行方式。html

Activity启动模式设置:<activity android:name=".MainActivity" android:launchMode="standard" />

Android总Activity的启动模式分为四种:android

Activity的四种启动模式:

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

2. singleTop
若是在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会建立新的实例并放入栈顶(即便栈中已经存在该Activity实例,只要不在栈顶,都会建立实例)。

3. singleTask
若是在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,所以在它上面的实例将会被移除栈。若是栈中不存在该实例,将会建立新的实例放入栈中。 

4. singleInstance
在一个新栈中建立该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果至关于多个应用程序共享一个应用,无论谁激活该Activity都会进入同一个应用中。

一、standard是系统默认的启动模式。浏览器

Standard模式是每次都会建立新的Activity对象,当点击返回按钮时,他会将栈顶(当前Activity)消灭,而后跳到下一层,不过此时在这个Activity中再次点击按钮建立对象时,它会另外建立新的Activity对象,这种模式可能大多数状况下不是咱们须要的,由于对系统性能的消耗过大。性能

二、singleTop模式spa

singleTop模式在每次启动的时候会检测栈顶是否是要启动的activity,若是是,则不建立新的activity;不然,建立新的activitycode

三、singleTask模式htm

singleTask模式在每次启动的时候检测栈中是否存在将要启动的activity,若是存在,则会让要启动的activity之上的元素出栈,销毁要启动的activity之上的activity;若是不存在,建立出新的activity对象

四、singleInstance模式blog

singleInstance模式相似于浏览器,singleInstance模式在每次启动的时候会检测栈中是否存在将要启动的activity,若是存在,则将要启动的activity放到栈顶,确保至多有一个,与singleInstance不一样的是,singleInstance模式不会销毁要启动的activity之上的activity。博客

此篇博客得益于法哥的一篇博客:http://www.cnblogs.com/fanchangfa/archive/2012/08/25/2657012.html,他已经写得很是详细了,我在此就再也不赘述了。

 

 

=

相关文章
相关标签/搜索