2011-07-12 166 views

回答

102

當您使用setFlags您正在替換舊標誌...當您使用addFlags您正在追加新的標誌。請記住,一個標誌只是一個二進制的整數,在二進制中,標誌看起來像這樣:1,10,100,1000等等(在這個例子中是1,2,4,8) 。因此,addFlags所做的是使用|運算符附加您傳遞的整數。正在執行

// example... 
// value of flags: 1 
intent.setFlags(2|4); 
// now flags have this value: 110 
intent.addFlags(8); 
// now flags have this value: 1110 
+0

如何可能'intent.setFlags(2 | 4);'將給出110值 –

+4

@GopalSinghSirvi二進制LSB(最低有效位)爲人類可讀值是最正確的。這意味着110的0表示值2^0 = 1。第二個值1表示2^1 = 2。第三個值表示2^2 = 4。所以使用OR | 4(100)和2(010)上的運算符是110 – Patric

+0

這不應該與具有與Intent方法不同行爲的Window.setFlags/addFlags混淆。 – TheIT

8
intent.setFlags(int num); 

這組標誌控制如何處理Intent.setflag主要取決於類型的組件由Intent.It返回鏈接多個呼叫到一個單一的聲明相同意圖的對象。

intent.addFlags(int num); 

這有助於其他標誌添加到特定的意圖與現有的values.this也返回鏈接多個呼叫到一個單一的聲明相同意圖的對象。

1
public Intent addFlags(int flags) { 
    mFlags |= flags; 
    return this; 
} 
public Intent setFlags(int flags) { 
    mFlags = flags; 
    return this; 
} 

剛剛從源代碼中找到這個,以供參考。

相關問題