Android:What is difference between setFlags and addFlags for intent
Asked Answered
E

3

113

What is difference between setFlags and addFlags for intent. Could any one explain it please. Help Appreciated.

Eller answered 12/7, 2011 at 12:32 Comment(1)
I always appreciate a link to the official docs: developer.android.com/reference/android/view/… and/or developer.android.com/reference/android/view/…Dareen
E
147

When you use setFlags you are replacing the old flags... when you use addFlags you are appending new flags. Remember, a flag is just a integer which is power of two... in binary, flags look like this: 1, 10, 100, 1000, etc... (which in this case are 1, 2, 4, 8). So, what addFlags does is appending the integer you pass using the | operator.

// example... 
// value of flags: 1
intent.setFlags(2|4); 
// now flags have this value: 110
intent.addFlags(8); 
// now flags have this value: 1110
Edmiston answered 12/7, 2011 at 12:36 Comment(5)
How can it possible intent.setFlags(2|4); will give 110 valueHonky
@GopalSinghSirvi in binary the LSB (least significant bit) for human readable values is the most right one. that means that the 0 of the 110 represents the value 2^0 = 1 . The second value 1 represents 2^1 = 2. And the third value represents 2^2=4. So using the OR | operator on 4 (100) and 2(010) is 110Expansion
This should not be confused with Window.setFlags/addFlags which have a different behaviour to the Intent methods.Hertha
May I know the uses of these intent flags? or can you tag me to the appropriate question?Mack
What are the flags that are set to an Intent by default? i.e. what exactly does gets reset when we use Intent().setFlags()?Occult
C
10
intent.setFlags(int num);

This set flag controls how to handle the Intent.setflag mainly depends on type of component being executed by the Intent.It returns the same intent object for chaining multiple calls into a single statement.

intent.addFlags(int num);

This helps to add additional flags to a particular intent with the existing values.this also returns the same intent object for chaining multiple calls into a single statement.

Curettage answered 10/4, 2012 at 8:30 Comment(0)
L
8
 public Intent addFlags(int flags) {
    mFlags |= flags;
    return this;
}
public Intent setFlags(int flags) {
    mFlags = flags;
    return this;
}

Just found this from the source code,for reference.

Lysis answered 20/1, 2016 at 16:41 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.