• 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。

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

  • 相关阅读:
    codevs 1576 最长严格上升子序列
    codevs 3415 最小和
    codevs 2102 石子归并 2
    洛谷 P1040 加分二叉树
    BZOJ 3038 上帝造题的七分钟二
    codevs 线段树练习ⅠⅡⅢ
    启动Tomcat提示:指定的服务未安装
    poj 1061 青蛙的约会 (扩展欧几里得模板)
    POJ 3449 Geometric Shapes(判断几个不同图形的相交,线段相交判断)
    HDU 5251 矩形面积(二维凸包旋转卡壳最小矩形覆盖问题) --2015年百度之星程序设计大赛
  • 原文地址:https://www.cnblogs.com/yangang2013/p/4931510.html
Copyright © 2020-2023  润新知