• Activity的四种启动模式详解


    Activity的启动模式在清单文件AndroidManifest.xml中的Activity属性中进行设置:

    如:<activity

        android:name=".MainActivity"
    android:launchMode="standard"/>

    Activity的启动模式一共四种:

    1、standard 模式
      标准模式,如果不在清单文件中声明,系统会默认使用这种模式启动,大多情况下也都是使用这种模式启动。
    特点是:每一次都会创建一个新的Activity,这个新的Activity总是放在栈顶; 由于都创建新的Activity,
    比较耗资源。
    2、singleTop 模式
      每当需要启动Activity时,系统首先会检查栈顶的Activity是否存在一样的Activity实例,如果存在,

    则直接使用栈顶已存在的Activity,否则新建一个Activity。
    3、singleTask 模式
      每当需要启动一个Activity时,系统会检查存放的栈中是否存在一样的Activity实例,如果存在,调用该实

    例的newInstance()方法重用该Activity,并把他上面的Activity销毁掉,使其处于激活状态---栈顶,否则
    就重新创建一个新的Activity实例。

    4、singleInstance 模式
      每当需要启动一个Activity时,系统会检查栈中是否存在一样的Activity实例,如果存在,则会调用onNewIntent()
    给它开一个单间,即重新开一个栈存放.这种模式只会创建一次,即只会调用一次onCreate()方法,除非Activity被销毁。
    比较耗资源,并且使用该模式时会存在bug---调用startActivityForResult()时,会报错,我也不知道什么解决,最好
    别用。


    附:Activity与栈
    1.栈的基本工作原则是先进后出,或者后进先出。
    2.Activity是由栈来管理的,每创建一个Activity,都会往栈中叠加,就像往一个箱子(假设箱子大小与书本恰好相同)里存放书本,
    先创建的放在栈底,最上面的是栈顶,只有栈顶的Activity是激活状态的。
    3.Activity的启动模式,其实是对栈进行管理/操作。
















  • 相关阅读:
    深度优先搜索和广度优先搜索的比较与分析
    BFS() DFS() 模板
    jQuery EasyUI1.2.4发布了
    深入理解dispatcher和redirect的区别
    分享一份jquery easyui的培训文档
    生活中的十悟
    CSS Hack的基本原理
    推荐11款jQuery开发的复选框和单选框美化插件
    NodeJS初探之三——新星的力量
    由浅到深的分析Javascript OO之写类方式之一:构造函数
  • 原文地址:https://www.cnblogs.com/huaqing-wkc/p/4913850.html
Copyright © 2020-2023  润新知