zoukankan      html  css  js  c++  java
  • Activity启动模式

    问题:当我们添加activity的launchMode属性时,发生了什么?

    <activity android:name=”.MainActivity”
      android:launchMode=”singleTop”>
    </activity>
    

    假设A、B、C、D、E、F是我们创建的活动界面。

    launchMode=”singleTop”

    添加launchMode=“singleTop”到D。

    情景1:

    活动栈的初始状态

    D-D在活动栈的顶端

    C

    B

    A

    从服务、其它应用或者其它一些位置启动D

    活动栈的最终状态

    D-旧的实例,通过onNewIntent(Intent intent)获取extras data

    C

    B

    A

    情景2:

    活动栈的初始状态

    C

    B

    A

    从服务、其它应用或者其它一些位置启动D

    活动栈的最终状态

    D -正常启动

    C

    B

    A

    情景3:

    活动栈的初始状态

    C

    D

    B

    A

    从C启动D

    活动栈的最终状态

    D -因为上一个D不在顶端,新的实例将被创建

    C

    D

    B

    A

    launchMode=”singleTask”

    添加launchMode=”singleTask”到 C.

    情景1:

    活动栈的初始状态

    D

    C

    B

    A

    启动C

    活动栈的最终状态

    C -旧的实例,通过onNewIntent(Intent intent)获取 extras data

    B

    A

    实际上– D 销毁了

    情景2:

    活动栈的初始状态

    B

    A

    启动C

    活动栈的最终状态

    C -正常启动.

    B

    A

    launchMode=”singleInstance”

    添加launchMode=”singleInstance”到 E.

    情景1:

    活动栈的初始状态

    D

    C

    B

    A

    Start E

    活动栈的最终状态

    E

    — — — — — — — — — — — — — — — — — — — — — — —

    D

    C

    B

    A

    信息 — A , B , C , D 在一个任务中,而 E 在另一个任务中.

    并且,如果继续从E启动F,那么

    活动栈的最终状态

    F

    D

    C

    B

    A

    — — — — — — — — — — — — — — — — — — — — — — —

    E

    信息 — A , B , C , D , F 将会在一个任务,而 E在另一个任务中.

    另一种情景:

    活动栈的初始状态

    A

    B

    — — — — — — — — — — — — — — — — — — — — — — —

    E

    从A启动E

    活动栈的最终状态

    E -旧的实例, 通过onNewIntent(Intent intent)获取extras data 

    — — — — — — — — — — — — — — — — — — — — — — —

    A

    B

    launchMode=”standard”

    添加launchMode=”standard”到 B.

    活动栈的初始状态

    D

    C

    B

    A

    启动B

    活动栈的最终状态

    B -新实例

    D

    C

    B

    A

  • 相关阅读:
    包和常用内置模块(二)
    常用内置模块(一)
    正则表达式和re模块
    迭代器和生成器
    函数(四)
    函数(三)闭包函数与装饰器
    Codeforces Round #539 (Div. 2) D 思维
    Codeforces Round #539 (Div. 2) 异或 + dp
    Codeforces Round #546 (Div. 2) E 推公式 + 线段树
    牛客练习赛42 C 反着计算贡献
  • 原文地址:https://www.cnblogs.com/LWJin/p/11839009.html
Copyright © 2011-2022 走看看