Quando você usa, setFlagsvocê está substituindo as sinalizações antigas ... quando você usa, addFlagsvocê está adicionando novas sinalizações. Lembre-se, um sinalizador é apenas um número inteiro que é a potência de dois ... em binário, os sinalizadores são assim: 1, 10, 100, 1000, etc ... (que neste caso são 1, 2, 4, 8) . Então, o que addFlagsfaz é anexar o inteiro que você passa usando o |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
Como é possível intent.setFlags(2|4);dar valor 110
Gopal Singh Sirvi
6
@GopalSinghSirvi em binário, o LSB (bit menos significativo) para valores legíveis por humanos é o mais correto. isso significa que 0 de 110 representa o valor 2 ^ 0 = 1. O segundo valor 1 representa 2 ^ 1 = 2. E o terceiro valor representa 2 ^ 2 = 4. Portanto, usando o OR | operador em 4 (100) e 2 (010) é 110
Patric
Isso não deve ser confundido com Window.setFlags / addFlags, que tem um comportamento diferente dos métodos Intent.
TheIT de
Posso saber os usos desses sinalizadores de intenção? ou você pode me marcar com a pergunta apropriada?
Anish Kumar
11
intent.setFlags(int num);
Este sinalizador de conjunto controla como lidar com o Intent.setflag depende principalmente do tipo de componente que está sendo executado pelo Intent. Ele retorna o mesmo objeto de intent para encadear várias chamadas em uma única instrução.
intent.addFlags(int num);
Isso ajuda a adicionar sinalizadores adicionais a um intent específico com os valores existentes. Isso também retorna o mesmo objeto de intent para encadear várias chamadas em uma única instrução.
Respostas:
Quando você usa,
setFlags
você está substituindo as sinalizações antigas ... quando você usa,addFlags
você está adicionando novas sinalizações. Lembre-se, um sinalizador é apenas um número inteiro que é a potência de dois ... em binário, os sinalizadores são assim: 1, 10, 100, 1000, etc ... (que neste caso são 1, 2, 4, 8) . Então, o queaddFlags
faz é anexar o inteiro que você passa usando o|
operador.fonte
intent.setFlags(2|4);
dar valor 110Este sinalizador de conjunto controla como lidar com o Intent.setflag depende principalmente do tipo de componente que está sendo executado pelo Intent. Ele retorna o mesmo objeto de intent para encadear várias chamadas em uma única instrução.
Isso ajuda a adicionar sinalizadores adicionais a um intent específico com os valores existentes. Isso também retorna o mesmo objeto de intent para encadear várias chamadas em uma única instrução.
fonte
Acabei de encontrar isso no código-fonte, para referência.
fonte