【问题标题】:Android:What is difference between setFlags and addFlags for intentAndroid:意图的 setFlags 和 addFlags 有什么区别
【发布时间】:2011-07-12 12:32:22
【问题描述】:

setFlags 和 addFlags 的意图有什么区别。谁能解释一下。 帮助表示赞赏。

【问题讨论】:

标签: android


【解决方案1】:

当您使用setFlags 时,您将替换旧标志...当您使用addFlags 时,您将附加新标志。请记住,标志只是一个整数,它是 2 的幂...在二进制中,标志如下所示:1、10、100、1000 等...(在本例中为 1、2、4、8) .所以,addFlags 所做的是使用 | 运算符附加您传递的整数。

// example... 
// value of flags: 1
intent.setFlags(2|4); 
// now flags have this value: 110
intent.addFlags(8); 
// now flags have this value: 1110

【讨论】:

  • 怎么可能intent.setFlags(2|4);会给出110值
  • @GopalSinghSirvi 在二进制中,人类可读值的 LSB(最低有效位)是最正确的。这意味着 110 的 0 代表值 2^0 = 1 。第二个值 1 表示 2^1 = 2。第三个值表示 2^2=4。所以使用 OR | 4 (100) 和 2(010) 上的运算符是 110
  • 这不应与与 Intent 方法具有不同行为的 Window.setFlags/addFlags 混淆。
  • 我可以知道这些意图标志的用途吗?或者你能把我标记到适当的问题吗?
【解决方案2】:
intent.setFlags(int num);

此设置标志控制如何处理 Intent。setflag 主要取决于 Intent 正在执行的组件类型。它返回相同的意图对象,用于将多个调用链接到单个语句中。

intent.addFlags(int num);

这有助于使用现有值向特定意图添加额外的标志。这还返回相同的意图对象,用于将多个调用链接到单个语句中。

【讨论】:

    【解决方案3】:
     public Intent addFlags(int flags) {
        mFlags |= flags;
        return this;
    }
    public Intent setFlags(int flags) {
        mFlags = flags;
        return this;
    }
    

    刚从源码中找到的,供参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2012-09-01
      • 2013-01-25
      • 2020-06-23
      相关资源
      最近更新 更多