반응형
안드로이드에서 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
'Android 개발 > Android' 카테고리의 다른 글
Android API key 값 안전하게 Local.properties 에 보관하기 (2) | 2024.12.18 |
---|---|
BuildConfig 와 ProductFlavors 정리 # BuildConfigField vs ResValue (0) | 2024.12.18 |
Vibrator 로 구현하는 안드로이드 진동 (0) | 2023.05.23 |
SharedPreference 로 간단한 데이터 저장하기 # Android (2) | 2023.04.27 |
getLaunchIntentForPackage 로 다른 앱을 실행 하는 방법 # query Android 11 (0) | 2023.04.20 |
함수안에 함수 넣기 # Closure Local functions Kotlin (0) | 2023.04.15 |
RemoteConfig 이용해서 다이나믹하게 앱 업데이트 하기 # Android (1) | 2023.03.23 |
Target Api 31 ( Android12 ) 에서 적용해야 하는 사항들 # Location Intent Filters exported mutability (0) | 2022.12.01 |
Contentprovider 와 ContentResolver 이용한 CRUD # Mime-type Uri (1) | 2022.11.18 |
Android 리소스 정리시 사용하는 Naming Convention (0) | 2022.11.12 |
댓글