再详细讲解之前先说一下一个小细节:

Intent的setFlag和addFlag有什么区别?是不是之前都没有太注意这个问题呢?

简单可以理解成:setFlag是把之前的替换掉,addFlag是添加新的。

addFlag可以多次添加即添加多个Flag,setFlag也可以添加多个,不过需要一次性添加完,_Intent.setFlags(2|4);

OK,我们切入正题,Flag很多,先说常用的Flag,再提提其他的Flag。

大部分的情况下我们是不需要为Activity指定标记位,因此,个人觉得只是理解即可,不过还是要掌握前4个。

在新任务中启动 Activity。如果已为正在启动的 Activity 运行任务,则该任务会转到前台并恢复其最后状态,同时 Activity 会在 "singleTask"launchMode 值相同的行为。

如果正在启动的 Activity 是当前 Activity(位于返回栈的顶部),则 现有实例会接收对

这会产生与XML中指定"singleTop"launchMode 值相同的行为。

如果正在启动的 Activity 已在当前任务中运行,则会销毁当前任务顶部的所有 Activity,并通过

FLAG_ACTIVITY_CLEAR_TOP 通常与 FLAG_ACTIVITY_NEW_TASK 结合使用。一起使用时,通过这些标志,可以找到其他任务中的现有 Activity,并将其放入可从中响应 Intent 的位置。

注:如果指定 Activity 的启动模式为 "standard",则该 Activity 也会从堆栈中移除,并在其位置启动一个新实例,以便处理传入的 Intent。 这是因为当启动模式为 "standard" 时,将始终为新 Intent 创建新实例。

如果设置,新的Activity不会在最近启动的Activity的列表中保存。它等同于在XML中指定Activity的属性android:excludeFromRecents=”true”。

这个标志一般不是由程序代码设置的,如在launchMode中设置singleTask模式时系统帮你设定

如果设置,这将在Task的Activity stack中设置一个还原点,当Task恢复时,需要清理Activity。也就是说,下一次Task带着FLAG_ACTIVITY_RESET_TASK_IF_NEEDED标记进入前台时(典型的操作是用户在主画面重启它),这个Activity和它之上的都将关闭,以至于用户不能再返回到它们,但是可以回到之前的Activity。

这在你的程序有分割点的时候很有用。例如,一个e-mail应用程序可能有一个操作是查看一个附件,需要启动图片浏览Activity来显示。这个Activity应该作为e-mail应用程序Task的一部分,因为这是用户在这个Task中触发的操作。然而,当用户离开这个Task,然后从主画面选择e-mail app,我们可能希望回到查看的会话中,但不是查看图片附件,因为这让人困惑。通过在启动图片浏览时设定这个标志,浏览及其它启动的Activity在下次用户返回到mail程序时都将全部清除。

如果设置,并且这个Intent用于从一个存在的Activity启动一个新的Activity,那么,这个作为答复目标的Activity将会传到这个新的Activity中。这种方式下,新的Activity可以调用setResult(int),并且这个结果值将发送给那个作为答复目标的Activity。

这个标志一般不由应用程序代码设置,如果这个Activity是从历史记录里启动的(常按HOME键),那么,系统会帮你设定。

不要使用这个标志,除非你自己实现了应用程序启动器。与FLAG_ACTIVITY_NEW_TASK结合起来使用,可以禁用把已存的Task送入前台的行为。当设置时,新的Task总是会启动来处理Intent,而不管这是是否已经有一个Task可以处理相同的事情。

由于默认的系统不包含图形Task管理功能,因此,你不应该使用这个标志,除非你提供给用户一种方式可以返回到已经启动的Task。

如果FLAG_ACTIVITY_NEW_TASK标志没有设置,这个标志被忽略。

如果在Intent中设置,并传递给Context.startActivity()的话,这个标志将阻止系统进入下一个Activity时应用Acitivity迁移动画。这并不意味着动画将永不运行——如果另一个Activity在启动显示之前,没有指定这个标志,那么,动画将被应用。这个标志可以很好的用于执行一连串的操作,而动画被看作是更高一级的事件的驱动。

如果设置,新的Activity将不再历史stack中保留。用户一离开它,这个Activity就关闭了。这也可以通过设置noHistory特性。

如果设置,作为新启动的Activity进入前台时,这个标志将在Activity暂停之前阻止从最前方的Activity回调的onUserLeaveHint()。

典型的,一个Activity可以依赖这个回调指明显式的用户动作引起的Activity移出后台。这个回调在Activity的生命周期中标记一个合适的点,并关闭一些Notification。

如果一个Activity通过非用户驱动的事件,如来电或闹钟,启动的,这个标志也应该传递给Context.startActivity,保证暂停的Activity不认为用户已经知晓其Notification。

如果在Intent中设置,并传递给Context.startActivity(),这个标志将引发已经运行的Activity移动到历史stack的顶端。

例如,假设一个Task由四个Activity组成:A,B,C,D。如果D调用startActivity()来启动Activity B,那么,B会移动到历史stack的顶端,现在的次序变成A,C,D,B。如果FLAG_ACTIVITY_CLEAR_TOP标志也设置的话,那么这个标志将被忽略。

android setflag找不到_Android面试题4–Activity之Intent的Flag相关推荐

  1. Android学习笔记(七):多个Activity和Intent

    根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...

  2. Xamarin.Android提示找不到mono.Android.Support.v4

    Xamarin.Android提示找不到mono.Android.Support.v4 错误信息:Error: Exception while loading assemblies: System.I ...

  3. Xamarin Android提示找不到资源属性定义

    Xamarin Android提示找不到资源属性定义 错误信息:"Resource.Attribute"未包含"actonBarSize"的定义 Xamarin ...

  4. Android (2) —— Android Studio找不到连接的手机

    前言 当前,深度学习有很多框架:tensorflow.pytorch.caffe.keras等.很多场景下,需要训练好的模型在移动端运行.移动端的框架又有很多TensorFlow Lite.Core ...

  5. android 仿微信选取相册_Android模仿微信选择图片

    前言 最近公司需要做一个类似微信那种选择头像和上传图片的功能,本想上github上找的,后来想了想,还是自己做一个,不仅方便以后用(毕竟自己写的修改起来也比较方便),还可以学到一些知识,废话少说,先看 ...

  6. eclipse java android_java - Android Eclipse - 找不到* .ap

    java - Android Eclipse - 找不到* .ap 我知道之前已经问过这个问题而且我已经看到过多的解决方案,但似乎没有一个对我有用. 我能够毫无问题地构建我的apk,直到此错误开始出现 ...

  7. 2020年高压电工找答案及高压电工试题及答案

    题库来源:安全生产模拟考试一点通公众号小程序 2020年高压电工找答案及高压电工试题及答案,包含高压电工找答案答案和解析及高压电工试题及答案练习.由安全生产模拟考试一点通公众号结合国家高压电工考试最新 ...

  8. 【Android教程】Android Studio找不到连接的手机完全解决办法

    Android Studio找不到连接的手机完全解决办法 1.问题背景 现在Android大多都用谷歌的Android Studio来开发 但是 一开始使用Android Studio都不会那么顺利 ...

  9. android 涨潮动画加载_Android附带涨潮动画效果的曲线报表绘制

    写在前面 本文属于部分原创,实现安卓平台正弦曲线类报表绘制功能介绍,基于网络已有的曲线报表绘制类(LineGraphicView)自己添加了涨潮的渐变动画算法 最终效果图 废话少说,直接上源码 一.自 ...

最新文章

  1. Android 7.0 init.rc的一点改变
  2. Imageloader6-mUIHandler的初始化
  3. python中用str乘方_Python基础知识
  4. Servlet技术简介与编写、编译Servlet程序
  5. 零基础学Java的朋友值得一看
  6. 高能同步辐射光源科学数据管理策略研究与应用
  7. iPhone 13 的十大爆料:“十三”到底“香不香”?
  8. QQ2011的DD包密码验证报文解密密钥计算困惑之二
  9. 用户账户、共享和NTFS权限
  10. spyder python下载_Spyder python下载
  11. 进销存管理系统是什么?能给企业带来哪些好处?
  12. IOS 混合开发 手势返回控制
  13. 量化投资_期货日内交易几个问题的考证
  14. 面向对象设计——系统动态模型设计(1,交互模型)
  15. 字节跳动全链路压测(Rhino)的实践
  16. css元素类型哪几种
  17. 基于Cisco Packet Tracer的中小型网吧组网设计方案
  18. MSDC 4.3 接口规范(16)
  19. Sp是如何走到这一步
  20. 【001】python调用VBA方式_#py

热门文章

  1. ofo运营方还款3574.62万元 你的押金还好吗?
  2. 拳王虚拟项目公社:分享一个大学生上班族都可做的虚拟副业项目
  3. 十大笔记本品牌型号命名规则【三星、苹果、明基】
  4. win7 32位php安装包下载地址,appserv官方下载|AppServ(php环境安装包)下载v8.6 64位/32位 支持win7/win8/win10_ IT猫扑网...
  5. Android studio中提交svn一直卡在performing VCS commit
  6. 数据结构与算法概述——C语言
  7. 使用StarUML生成live555类图
  8. php 解析返回的xml,php解析cas返回的xml解决思路
  9. python下面的代码_求下面python代码的差别。
  10. 【java】CGLIB动态代理原理分析