Activity的四种加载模式

1.什么是加载模式?

   在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来已存在的activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。

 

2.如何配置?

可以在清单文件中,给需要配置的Activity添加。

 

 

3.四种加载模式的详解

  • 在Android中,用一个称之为Task Stack (回退栈)结构来存储管理启动的Activity对象。
  • 一个应用启动,系统就会为其创建一个对应的TaskStack来存储并管理Activity对象。

(1)standard

    Android是使用返回栈来管理活动的,在standard模式下,每当启动一个新的Activity,它就会在返回栈中入栈,并处于栈顶位置。对于使用standard模式的活动,系统不会在乎是否这个Activity已经在返回栈中存在,每次启动都会创建该Activity的一个新的实例。

 

 (2)singleTop

    当将要被启动的目标Activity已经位于栈顶时,系统不会重新创建目标的Activity实例,而是复用已有的Activity实例。如果将要启动的目标Activity没有位于Task栈顶,此时系统会重新创建目标Activity实例并把它加载到Task栈顶—此时与standard模式完全相同。

 

 (3)singleTask

    当Activity启动模式为singleTask时,每次启动Activity首先会在返回栈中查找是否存在Activity实例。启动目标Activity时,可分为如下三个情况:

A:如果将要启动的目标Activity不存在,系统将会创建目标Activity的实例,并将它加入Task栈顶。

B:如果将要启动的目标Activity已经位于Task栈顶,此时与SingleTop模式行为相同。

C:如果将要启动的目标Activity已经存在、但没有位于Task栈顶,系统将会把位于该Activity上面的所有Activity移除Task栈,从而使目标Activity转入栈顶。

 

  (4)singleInstance

  这种加载模式下,系统保证无论从哪个BackTask中启动目标Activity,只会创建一个目标Activity实例,并会使用一个全新的Task栈来装载Activity实例。当系统采用singleInstance模式启动目标Activity时,可分为如下两种情况:

  A:如果将要启动的目标Activity不存在,系统会先创建一个全新的Task、再创建目标Activity

实例,并将它加入新的Task的栈顶。

  B:如果要启动的Activity已经存在,系统会把该Activity所在的Task转到前台,从而使用该Activity显示出来。采用singleInstance模式加载Activity总是位于Task栈顶,采用singleInstance模式加载Activity所在Task只包含Activity。

 

  比较简单,就不画图或者演示了。。。。

 

posted @ 2015-11-02 21:47  ✈✈✈  阅读(198)  评论(0编辑  收藏  举报