zoukankan      html  css  js  c++  java
  • 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的启动模式,其实是对栈进行管理/操作。
















  • 相关阅读:
    设计模式---组合设计模式
    BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [
    Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
    Myeclipse6.0 的hibernate反向工程
    注册码
    Window.Open参数、返回值
    JS键盘上所有按键KeyCode
    使用Spring的JdbcTemplate访问数据库 转
    handlerbar.js
    java 遍历所有子节点
  • 原文地址:https://www.cnblogs.com/huaqing-wkc/p/4913850.html
Copyright © 2011-2022 走看看