zoukankan      html  css  js  c++  java
  • activity的四种加载模式

    在android里,有4种activity的启动模式,分别为: standard, singleTop, singleTask和singleInstance, 其中standard和singleTop类似, singleTask和singleInstance类似, 用法如下:

    (1).standard和singleTop

    这两种加载模式下, 同一个task中可以存在一个activity的多个实例, 并且可以位于activity栈的任意位置

    先举个例子:

    假设目标task的activity栈为: A->B->C->D(栈底->栈顶)

    在程序中调用startActivity(D) 

    如果D是standard模式, 则activity栈变为:

    A->B->C->D->D, 也就是会重新创建一个D实例

    如果D是singleTop模式, 则activity栈变为

    A->B->C->D, 不会创建D实例, 就是说如果D在目标task 的activity栈的栈顶, 则不会创建新的实例, 而是调用D的onNewIntent()方法, 反之如果D不在目标task 的activity栈的栈顶, 则会重新创建一个D实例

    (2). singleTask和singleInstance

    这两种加载模式下, 同一个task中只会存在一个activity的实例, 如果通过startActivity()启动,则调用onNewIntent()方法, 而不是创建一个新的实例。这两种模式下, activity实例均位于activity栈的栈底。

    这两种加载模式的区别:

    假设一个Activity的实例A 采用如下两种加载模式:

    singleTask:

       如果A调用startActivity(B)启动B实例, 则A和B位于同一个task中。

    singleInstance:

       如果A调用startActivity(B)启动B实例, 则系统会自动给intent添加一个属性FLAG_ACTIVITY_NEW_TASK, 将B实例放入到一个新的task中, 也就是说A实例所在的task中只能有A自己, 不能存在其他实例

  • 相关阅读:
    CentOS新系统必做的几件事
    CentOS基础指令备忘
    有向图的强连通分量
    模仿c的字符转整数函数 atoi
    N个骰子的点数和的概率分布
    c语言算法题目求职用
    copy指定目录下包括子目录中所有的文件
    js的页面交互
    js的数据类型、函数、流程控制及变量的四种声明方式
    z-index
  • 原文地址:https://www.cnblogs.com/wangzehuaw/p/4977649.html
Copyright © 2011-2022 走看看