|=的读取方式与相同
+=。
notification.defaults |= Notification.DEFAULT_SOUND;
是相同的
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
|按位或运算符在哪里。
这里引用了所有运算符。
之所以使用按位运算符,是因为这些常量经常使int能够携带标志。
如果你查看这些常数,你会发现它们具有两个幂:
public static final int DEFAULT_SOUND = 1;public static final int DEFAULT_VIBRATE = 2; // is the same than 1<<1 or 10 in binarypublic static final int DEFAULT_LIGHTS = 4; // is the same than 1<<2 or 100 in binary
因此,你可以使用按位或来添加标志
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // same as 001 | 010, producing 011
所以
myFlags |= DEFAULT_LIGHTS;
只是意味着我们添加了一个标志。
对称地,我们使用
&以下命令测试设置的标志:
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;



