Android之activity加载模式

原创 2015年07月07日 21:05:08

        Android的activity在AndroidManifest中有一个属性android:launchMode,里面有4个加载模式,分别是:standard,singleTop,singleTask,singleInstance。

    1.standard模式

    standard即标准,如果在AndroidManifest中没有设置则默认为standard,同一个activity在intent中会不停的实例化,比如A是activity,A中启动A就是A-A-A-A-A,或者是A-B-B-A-B,同一个activity可以实例化很多次。

    2.singleTop模式

   从字面上理解顶部单个的,也就是activity处于栈顶时,再次创建同一个activity时不会再实例化,如果不在栈顶,效果和standard一样,比如A在栈顶,重复创建的结果还是A,但是如果是A-B-C这样的结构,如果A是栈顶,实例化C的话,就变成了C-A-B-C。

   3.singleTask模式

    想要理解这个模式首先要理解task,那么Android中的task是干什么的呢?

   一般我们启动一个应用的时候系统会创建一个task,而我们在activity跳转时会将activity压栈,这是这一个stack是属于这个task的,但是我们也能通过singleTask,singleInstance去创建task,比如前者我们通过singleTask启动的activity会被当成root activity,从这个activity启动的activity也会压栈到这个task中,不同的task通过TaskID进行区分。那么此时如果我通过一个task中的activity启动另一个task的activity,那么堆栈中所有的activity都会被移动到前台来,画个图比喻一下。

   

   4.singleInstance模式

  这个模式和singleTask除了一个区别外,其他都是一样的。这个新建的task只能容纳这一个activity,至于启动其他的activity则不在这个堆栈里面。其他的不赘述了。

除了在AndroidManifest中设置外,我们在intent的setFlags中也能传递相应的标识,来修改activity和task的关系。下面介绍几个比较特殊的,一般的就不说了。

 FLAG_ACTIVITY_CLEAR_TOP

如果一个activity在启动另一个存在于同一个task中的activity的时候添加了这个标识,那么target activity前面的activity都会被销毁,比如A - B - C -D,现在A启动了C,并添加了这个标识,那么C前面的activity(即A,B)都将销毁,结果就是task中只有C - D。

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

这个标识是启动的activity不会在最近的activity列表中保存

版权声明:本文为博主原创文章,未经博主允许不得转载。

android开发笔记之 Activity四种加载模式

既然是安卓开发,我们就免不了和Activity打交道,因为它是前台的界面,也是android四大组件之一,那我们就来谈谈Activity的四种加载模式。为什么要为Activity指定加载模式?Andr...
  • qq_22063697
  • qq_22063697
  • 2016年05月10日 02:15
  • 1740

Android Activity有四种加载模式

standard, singleTop, singleTask和 singleInstance 在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的...
  • pecke
  • pecke
  • 2013年06月14日 14:46
  • 1348

Android基础之Activity加载模式

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。 ...
  • yjijilrx
  • yjijilrx
  • 2013年03月14日 16:46
  • 693

Android Activity 加载模式

Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别:   standard:...
  • dreamslayer
  • dreamslayer
  • 2014年10月15日 16:21
  • 103

Android Activity的加载模式

A
  • u012587637
  • u012587637
  • 2014年05月16日 18:02
  • 501

android activity 加载模式launchmode

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。 ...
  • mars0319
  • mars0319
  • 2012年02月13日 05:28
  • 613

android ---Activity加载模式

如果对这边看不太懂的话,建议先看看我之前写过的博客http://blog.csdn.net/ksj_j/article/details/53674770 首先Activity是由Task栈来管理...
  • ksj_j
  • ksj_j
  • 2016年12月16日 16:52
  • 185

android activity四种加载模式

详解Activity的四种加载模式 分类: Android 2013-09-26 22:27 216人阅读 评论(0) 收藏 举报 androidactivitylaunc...
  • wwp_love_biancheng
  • wwp_love_biancheng
  • 2014年04月14日 17:00
  • 311

Android四大组件之Activity(几种FLAG加载模式)

首先了解一下Stack和Activity的关系 Stack就像一个容器,而Activity就是填充这个容器的东西,第一个Activity会在最下面,最后添加的Activity会在最上面。从Stack...
  • u014321386
  • u014321386
  • 2016年09月04日 21:43
  • 875

Android Activity四种加载模式

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这...
  • long704480904
  • long704480904
  • 2012年08月08日 21:30
  • 1327
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android之activity加载模式
举报原因:
原因补充:

(最多只允许输入30个字)