zoukankan      html  css  js  c++  java
  • 几种改变Activity回退栈默认行为的Intent Flag

    FLAG_与LaunchMode相比最大的不同是临时性

    1.FLAG_ACTIVITY_NEW_TASK:

    Developer.android.com的说法:

    (1)在新的task中启动这个Activity,

    (2)如果已有一个task包含这个Activity,则这个task被带到前台。

    (3)效果与SingleTask相同。

    实验发现,只有从外部(另外的App)启动Activity,并添加FLAG_ACTIVITY_NEW_TASK标识时,表现才与上述相符;

    但不具有singleTask的clear_top效果。

    而在同一个APP启动Activity并添加FLAG_ACTIVITY_NEW_TASK时,与不添加标识效果一样,不仅不会新建task,而且新建的Activity不具有唯一性,与singleTask不完全相同。

    在同一App内启动Activity时,如果将new_task和multi_task组合使用,就会达到打开新task的效果。

    2.FLAG_ACTIVITY_SINGLE_TOP

    打开的Activity如果在栈顶,则不创建新的实例,并且会触发onNewIntent事件。

    与启动launchMode为SINGLE_TOP的Activity一致。

    3.FLAG_ACTIVITY_CLEAR_TOP

    Developer.android.com的说法:

    (1)如果当前task包含这个Activity,这个Activity以上的Activity出栈,这个Activity到达栈顶。

    (2)如果这个Activity是standard模式,这个Activity也出栈,并且重新实例化到达栈顶。

    默认行为应该是清除包括这个Activity及其以上Activity的所有Activity,但如果为要启动的Activity设置了特殊的launchMode,则launchMode会影响这个Activity的销毁与否,即:

    如果这个Activity是singleTop或singleTask模式,这个Activity不出栈。

    singleInstance模式没有CLEAR_TOP的意义,因为它的task中只有自己一个Activity。

    4.FLAG_ACTIVITY_REORDER_TO_FRONT

    如果当前task中包含这个Activity,这个Activity被拉到栈顶,其他Activity的顺序不变,仍在task中。如果这个Activity被设置为SingleTask或者打开这个Activity的时候,还添加了CLEAR_TOP的标签,则会将这个Activity上面的Activity出栈。

  • 相关阅读:
    linux sort根据日期时间排序方法记录
    gitlab数据迁移与升级记录
    ubuntu加压7z分卷
    docker环境运行elasticsearch以及汉化运行kibana
    nginx 403错误 检查nginx.conf user有没有问题,最好是当前用户
    系统属性file.encoding在JVM启动后,再次设置无法对系统的默认编码造成影响 & sun.jnu.encoding
    IDEA快速选择提示代码的设置
    log4j2可以打印到控制台,但无法打印到文件
    IDEA快捷键
    Eclipse自定义快捷键
  • 原文地址:https://www.cnblogs.com/hellocwh/p/4637671.html
Copyright © 2011-2022 走看看