|=
legge allo stesso modo di +=
.
notification.defaults |= Notification.DEFAULT_SOUND;
equivale a
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
dov'è |
l'operatore OR bit-saggio.
Tutti gli operatori sono indicati qui .
Un operatore bit-saggio viene utilizzato perché, come è frequente, quelle costanti consentono a un int di trasportare flag.
Se guardi quelle costanti, vedrai che hanno poteri di due:
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
Quindi puoi usare bit-saggio O per aggiungere flag
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // same as 001 | 010, producing 011
così
myFlags |= DEFAULT_LIGHTS;
significa semplicemente che aggiungiamo una bandiera.
E simmetricamente, testiamo che un flag sia impostato usando &
:
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;
pipe equal operator
a questa domanda o qualsiasi altra documentazione sull'argomento non aiuterebbe le persone a cercare.