Android:针对intent的setFlags和addFlags之间有什么区别

use*_*499 97 android

setFlags和addFlags之间有什么区别.任何人都可以解释一下.帮助感谢.

Cri*_*ian 128

当你使用时,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
Run Code Online (Sandbox Code Playgroud)

  • 二进制的@GopalSinghSirvi用于人类可读值的LSB(最低有效位)是最正确的值.这意味着110中的0代表值2 ^ 0 = 1.第二个值1表示2 ^ 1 = 2.并且第三个值表示2 ^ 2 = 4.所以使用OR | 4(100)和2(010)上的运算符是110 (6认同)

Sre*_*v R 10

intent.setFlags(int num);
Run Code Online (Sandbox Code Playgroud)

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

intent.addFlags(int num);
Run Code Online (Sandbox Code Playgroud)

这有助于使用现有值向特定intent添加其他标志.这也会返回相同的intent对象,以便将多个调用链接到单个语句中.


小智 5

 public Intent addFlags(int flags) {
    mFlags |= flags;
    return this;
}
public Intent setFlags(int flags) {
    mFlags = flags;
    return this;
}
Run Code Online (Sandbox Code Playgroud)

刚刚从源代码中找到此内容,以供参考。