Activity启动的Flag

QuibblerQuibbler 2020-03-04 约 5 分钟 1729 次阅读

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

与launchMode的singleTask效果一样。

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

相关推荐

精选
ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager
Android

ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager

ViewPager1、ViewPagerandroidx.viewpager.widget.ViewPager,Android中使用非常广泛的控件,可以说是APP必备:首次打开引导页、页面Banner广告等。常用方法:setAdapter() 设置适配器setOffscreenPageLimit() 设置缓存的页面个数,默认是 1setCurrentItem() 跳转到特定的页面setOnPage

1.1k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w