Activity启动的Flag 四大组件

Quibbler 2020-3-4 1317

Activity启动的Flag


        Activity有4中启动模式,参考Activity四种启动模式 。启动Activity的Intent添加flag,使用 Intent.addFlags(int flags) 方法。查看源码,可以看到总共有20种:

    Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
    Intent.FLAG_ACTIVITY_CLEAR_TASK
    Intent.FLAG_ACTIVITY_CLEAR_TOP
    Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
    Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
    Intent.FLAG_ACTIVITY_FORWARD_RESULT
    Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
    Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
    Intent.FLAG_ACTIVITY_MULTIPLE_TASK
    Intent.FLAG_ACTIVITY_NEW_DOCUMENT
    Intent.FLAG_ACTIVITY_NEW_TASK
    Intent.FLAG_ACTIVITY_NO_ANIMATION
    Intent.FLAG_ACTIVITY_NO_HISTORY
    Intent.FLAG_ACTIVITY_NO_USER_ACTION
    Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP
    Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
    Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
    Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS
    Intent.FLAG_ACTIVITY_SINGLE_TOP
    Intent.FLAG_ACTIVITY_TASK_ON_HOME

        后面简单介绍Intent几个常用的Flag。 


1、FLAG_ACTIVITY_CLEAR_TOP

        这个Flag有没有很熟悉。SingleTask启动模式自带该Flag,启动SingleTask的Activity,如果该Activity已经存在,会清空该Activity在任务栈之上的活动,并调用onNewIntent()方法。


2、FLAG_ACTIVITY_CLEAR_TASK

        能造成在启动Activity前,与Activity关联的任务被清空。启动的Activity成为Task的根,旧的活动都被结束了。该flag只能与FLAG_ACTIVITY_NEW_TASK联合使用。


3、FLAG_ACTIVITY_NEW_TASK

        与launchModesingleTask效果一样。

        1. 新Activity会成为新的Task任务栈的的开始。

        2. 通常用于具有"launcher"行为的活动:让用户完成一系列事情,完全独立于之前的Activity。

        3. 如果新Activity已存在于一个为它运行的任务中,那么不会启动,只会把该任务移到屏幕最前。

        4. 如果新Activity要返回result给启动自己的Activity,就不能用这个flag


4、FLAG_ACTIVITY_TASK_ON_HOME

        启动的Activity置于Launcher栈顶,效果就是无论如何返回都会返回到桌面。这个Flag特殊设定的应用才会使用,一般不会用这么偏僻的Flag。



参考资料:

         GitHub:ActivityTaskView 

       《Intent.addFlags() 启动Activity的20种flags全解析》

        Activity 启动模式及常见启动Flag总结

        taskAffinity


不忘初心的阿甘
最新回复 (0)
    • 安卓笔记本
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com