|=
读法与 相同。+=
notification.defaults |= Notification.DEFAULT_SOUND;
与 相同
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
其中 是按位 OR 运算符。|
此处引用了所有运算符。
使用逐位运算符是因为,这些常量使int能够携带标志。
如果你看一下这些常量,你会发现它们的幂是二:
public static final int DEFAULT_SOUND = 1;
public static final int DEFAULT_VIBRATE = 2; // is the same than 1<<1 or 10 in binary
public static final int DEFAULT_LIGHTS = 4; // is the same than 1<<2 or 100 in binary
因此,您可以使用按位 OR 添加标志
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // same as 001 | 010, producing 011
所以
myFlags |= DEFAULT_LIGHTS;
简单地说,这意味着我们添加了一个标志。
对称地,我们使用以下命令测试一个标志:&
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;