Android : 의도에 대한 setFlags와 addFlags의 차이점은 무엇입니까?


답변:


133

사용할 때 setFlags이전 플래그를 바꾸는 것입니다 ... 사용할 때 addFlags새 플래그를 추가합니다. 플래그는 2의 거듭 제곱 인 정수일뿐입니다. 이진수로 플래그는 다음과 같이 보입니다 : 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

그것은 가능한 수있는 방법 intent.setFlags(2|4);(110) 값을 줄 것이다
고팔 싱 Sirvi

6
@GopalSinghSirvi 바이너리의 LSB (최하위 비트)는 사람이 읽을 수있는 값에 가장 적합합니다. 즉, 110 중 0은 2 ^ 0 = 1 값을 나타냅니다. 두 번째 값 1은 2 ^ 1 = 2를 나타내고 세 번째 값은 2 ^ 2 = 4를 나타냅니다. 따라서 OR | 4 (100) 및 2 (010)의 연산자는 110입니다
Patric

Intent 메서드와 다른 동작을하는 Window.setFlags / addFlags와 혼동해서는 안됩니다.
TheIT 2015

이러한 인 텐트 플래그의 용도를 알 수 있습니까? 아니면 적절한 질문에 나를 태그 할 수 있습니까?
Anish Kumar

11
intent.setFlags(int num);

이 set 플래그는 Intent.setflag를 처리하는 방법을 제어하며 주로 Intent에 의해 실행되는 구성 요소의 유형에 따라 달라지며 여러 호출을 단일 문으로 연결하기 위해 동일한 인 텐트 개체를 반환합니다.

intent.addFlags(int num);

이는 기존 값이있는 특정 인 텐트에 추가 플래그를 추가하는 데 도움이되며 여러 호출을 단일 문으로 연결하기위한 동일한 인 텐트 개체를 반환합니다.


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

참조를 위해 소스 코드에서 방금 찾았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.