Android 개발/Android
Android Intent 결합시 사용하는 OR 비트 연산자
Developer88
2024. 12. 21. 01:16
반응형
안드로이드에서 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)
}
비트 연산에 대해 알고 싶으시다면,
아래 글을 참조해 주세요.
실제로 위에서 사용된 플래그들의 실제 값을 보면 다음과 같은데요.
원래부터 각 플래그는 충돌을 방지하기 위해,
서로 다른 비트 위치에 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