zoukankan      html  css  js  c++  java
  • 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。

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

  • 相关阅读:
    使用阿里云docker加速器
    Linux之screen命令详解
    Linux下Git和GitHub使用方法总结
    CentOS 6&7安装ffmpeg
    用yum安装lamp和lnmp环境
    nginx错误日志error_log日志级别
    CentOS7 yum 安装mysql 5.6
    python实现对数据的写入和读取(excel)
    windows下配置sublime
    远程配置pycharm
  • 原文地址:https://www.cnblogs.com/yangang2013/p/4931510.html
Copyright © 2011-2022 走看看