Android:setFlags和addFlags在意图上有什么区别


Answers:


133

使用时,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的价值
Gopal Singh Sirvi 2015年

6
@GopalSinghSirvi是最正确的二进制格式,它的二进制LSB(最低有效位)是人类可读的值。这意味着110的0表示值2 ^ 0 = 1。第二个值1表示2 ^ 1 =2。第三个值表示2 ^ 2 = 4。因此,使用OR | 4(100)和2(010)上的运算符是110
Patric 2015年

这不应与Window.setFlags / addFlags混淆,后者与Intent方法的行为不同。
TheIT

我可以知道这些意图标志的用法吗?还是可以将我标记为适当的问题?
阿尼丝·库玛

11
intent.setFlags(int num);

这个set标志控制着如何处理Intent.setflag主要取决于Intent正在执行的组件的类型,它返回相同的intent对象以将多个调用链接到一个语句中。

intent.addFlags(int num);

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


6
 public Intent addFlags(int flags) {
    mFlags |= flags;
    return this;
}
public Intent setFlags(int flags) {
    mFlags = flags;
    return this;
}

刚刚从源代码中找到了这个,以供参考。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.