Cuando lo usa setFlags, está reemplazando las banderas antiguas ... cuando lo usa addFlags, está agregando nuevas banderas. Recuerde, una bandera es solo un número entero que es potencia de dos ... en binario, las banderas se ven así: 1, 10, 100, 1000, etc ... (que en este caso son 1, 2, 4, 8) . Entonces, lo que addFlagshace es agregar el número entero que pasa usando el |operador.
// example... // value of flags: 1
intent.setFlags(2|4);// now flags have this value: 110
intent.addFlags(8);// now flags have this value: 1110
¿Cómo se puede intent.setFlags(2|4);dar valor 110?
Gopal Singh Sirvi
6
@GopalSinghSirvi en binario, el LSB (bit menos significativo) para valores legibles por humanos es el más correcto. eso significa que el 0 de 110 representa el valor 2 ^ 0 = 1. El segundo valor 1 representa 2 ^ 1 = 2. Y el tercer valor representa 2 ^ 2 = 4. Entonces, usando el OR | operador en 4 (100) y 2 (010) es 110
Patric
Esto no debe confundirse con Window.setFlags / addFlags, que tienen un comportamiento diferente al de los métodos Intent.
TheIT
¿Puedo conocer los usos de estas banderas de intención? ¿O puede etiquetarme a la pregunta apropiada?
Anish Kumar
11
intent.setFlags(int num);
Este indicador de conjunto controla cómo manejar el Intent.setflag depende principalmente del tipo de componente que está ejecutando el Intent. Devuelve el mismo objeto de intent para encadenar múltiples llamadas en una sola declaración.
intent.addFlags(int num);
Esto ayuda a agregar indicadores adicionales a una intención particular con los valores existentes. Esto también devuelve el mismo objeto de intención para encadenar múltiples llamadas en una sola declaración.
Respuestas:
Cuando lo usa
setFlags
, está reemplazando las banderas antiguas ... cuando lo usaaddFlags
, está agregando nuevas banderas. Recuerde, una bandera es solo un número entero que es potencia de dos ... en binario, las banderas se ven así: 1, 10, 100, 1000, etc ... (que en este caso son 1, 2, 4, 8) . Entonces, lo queaddFlags
hace es agregar el número entero que pasa usando el|
operador.fuente
intent.setFlags(2|4);
dar valor 110?Este indicador de conjunto controla cómo manejar el Intent.setflag depende principalmente del tipo de componente que está ejecutando el Intent. Devuelve el mismo objeto de intent para encadenar múltiples llamadas en una sola declaración.
Esto ayuda a agregar indicadores adicionales a una intención particular con los valores existentes. Esto también devuelve el mismo objeto de intención para encadenar múltiples llamadas en una sola declaración.
fuente
Acabo de encontrar esto en el código fuente, como referencia.
fuente