|=
lit de la même façon que +=
.
notification.defaults |= Notification.DEFAULT_SOUND;
est le même que
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
où |
est le bit à bit OU de l'exploitant.
Tous les opérateurs sont référencés ici.
Un peu de sages-opérateur est utilisé parce que, comme c'est fréquent, ces constantes permettent un int pour porter les drapeaux.
Si vous regardez à ces constantes, vous verrez qu'ils sont dans les puissances de deux :
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
Ainsi, vous pouvez utiliser bit-wise OU pour ajouter des drapeaux
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // makes 001 | 100, which is 101
donc
myFlags |= DEFAULT_LIGHTS;
signifie simplement que nous ajouter un drapeau.
Et symétriquement, nous testons un indicateur est défini à l'aide de &
:
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;