본문 바로가기
Android 개발/Android

Android Intent 결합시 사용하는 OR 비트 연산자

by Developer88 2024. 12. 21.
반응형

안드로이드에서 Intent를 결합해 사용하는 경우가 종종 있습니다.

이럴 때 OR 비트연산자를 사용하면, 코드가 간결해지는데요.

오늘은 이렇게 Intent 결합 시에 사용하는 OR 비트 연산자에 대해 알아보겠습니다.

 

1. Intent에서 사용하는 OR 비트 연산자

Intent를 결합할 때 사용한다고 하는 비트 연산자를,

실제 코드를 보겠습니다.

아래에서는 FLAG_ACTIVITY_CLEAR_TOP과 FLAG_ACTIVITY_NEW_TASK를 OR 비트 연산자로,

같이 add해 주었습니다.

아래의 'or'은 OR 비트 연산자를 의미합니다.

여기서는 2개의 flag를 다 사용하겠다는 의미가 됩니다.

 

 Intent(this@SplashActivity, destinationActivity)
            .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
            .also { startActivity(it) }

 

 

만약 비트 연산자를 사용하지 않는다면,

코드는 아래와 같이 길어져야 합니다.

 

Intent(this@SplashActivity, destinationActivity).apply {
    addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}.also {
    startActivity(this)
}

 

비트 연산에 대해 알고 싶으시다면,

아래 글을 참조해 주세요.

>> Bit 논리 연산과 시프트 연산의 정리

 

Bit 논리 연산과 시프트 연산 의 정리

오늘은 Bit의 논리 연산과 시프트 연산에 대해 정리해 보겠습니다.Bit논리연산을 알아보기전에,Bit가 무엇인지부터 알아보겠습니다. 1. Bit = Binary DigitBit는 Binary Digit의 약자입니다.컴퓨터에서

developer88.tistory.com

 

실제로 위에서 사용된 플래그들의 실제 값을 보면 다음과 같은데요.

원래부터 각 플래그는 충돌을 방지하기 위해,

서로 다른 비트 위치에 1을 가지고 있습니다.

 

int FLAG_ACTIVITY_CLEAR_TOP = 0x04000000; // 0100 0000 0000 0000 0000 0000 0000 0000

int FLAG_ACTIVITY_NEW_TASK = 0x10000000;  // 0001 0000 0000 0000 0000 0000 0000 0000

 

 

OR 연산자는 두 비트 중 하나라도 1이면 결과가 1이 되므로, 

주로 조건을 결합할 때 많이 사용합니다.

 

위의 두 인텐트는 아래와 같이 사용한 다는 것은,

둘 중 하나가 된다는 OR의 뜻이 아니라,

두 개의 flag가 결합되어 사용된다는 뜻입니다.

 

.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)

 

참고로 Java에서는 아래와 같이 '|'로 OR연산자를 표현합니다.

 

Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK

 

이상으로 Android Intent 결합 시 사용하는 OR 비트 연산자에 대해 알아보았습니다.

이런 간단한 것을 알고 있는 것만으로도,

코드를 더 간결하게 작성하고 이해할 수 있습니다.

 

728x90

댓글