Android: Jaka jest różnica między setFlags i addFlags dla intencji

Odpowiedzi:

133

Kiedy używasz setFlags, zastępujesz stare flagi ... kiedy używasz addFlags, dołączasz nowe flagi. Pamiętaj, że flaga to po prostu liczba całkowita będąca potęgą dwóch ... binarnie flagi wyglądają następująco: 1, 10, 100, 1000 itd. (Czyli w tym przypadku 1, 2, 4, 8) . A więc addFlagsdołączenie liczby całkowitej, którą przekazujesz za pomocą |operatora.

// example... 
// value of flags: 1
intent.setFlags(2|4); 
// now flags have this value: 110
intent.addFlags(8); 
// now flags have this value: 1110
Cristian
źródło
Jak to możliwe intent.setFlags(2|4);, da wartość 110
Gopal Singh Sirvi
6
@GopalSinghSirvi binarnie LSB (najmniej znaczący bit) dla wartości czytelnych dla człowieka jest najbardziej poprawnym. to znaczy, że 0 ze 110 reprezentuje wartość 2 ^ 0 = 1. Druga wartość 1 oznacza 2 ^ 1 = 2. A trzecia wartość oznacza 2 ^ 2 = 4. Więc używając OR | operator na 4 (100) i 2 (010) to 110
Patric
Nie należy tego mylić z Window.setFlags / addFlags, które mają inne zachowanie niż metody Intent.
TheIT
Czy mogę poznać zastosowania tych flag intencji? czy możesz oznaczyć mnie odpowiednim pytaniem?
Anish Kumar
11
intent.setFlags(int num);

Ta flaga zestawu kontroluje sposób obsługi Intent.setflag zależy głównie od typu komponentu wykonywanego przez Intent. Zwraca ten sam obiekt intencji do łączenia wielu wywołań w jedną instrukcję.

intent.addFlags(int num);

Pomaga to w dodawaniu dodatkowych flag do określonej intencji z istniejącymi wartościami. To również zwraca ten sam obiekt intencji do łączenia wielu wywołań w jedną instrukcję.

Sreedev R.
źródło
6
 public Intent addFlags(int flags) {
    mFlags |= flags;
    return this;
}
public Intent setFlags(int flags) {
    mFlags = flags;
    return this;
}

Właśnie znalazłem to w kodzie źródłowym, w celach informacyjnych.

Haldir65
źródło