@WorkerThread
해당 메서드가 백그라운드 스레드(작업 스레드)에서 실행되어야 함을 나타냄
이는 CPU를 많이 사용하는 작업이나 네트워크 요청 등 UI 스레드에서 실행되면 안 되는 작업에 사용 됨
@WorkerThread
fun performHeavyCalculation() {
// 긴 계산이나 백그라운드 작업 수행
val result = 0
// ... 계산 로직 ...
}
@MainThread / @UiThread
@UiThread
- 개발자가 실수로 백그라운드 스레드에서 UI 작업을 시도하는 것을 방지하는 데 도움이 됨
- @UiThread로 표시된 메소드는 UI 스레드에서 호출되어야 함
@MainThread
- @UiThread와 유사하지만, 특별한 상황에선 메인 스레드와 UI 스레드가 다를 수 있으므로 구분해서 사용 됨
@MainThread // or @UiThread
fun updateUIElements() {
// UI 스레드에서 UI 업데이트 수행
// ... UI 업데이트 로직 ...
}
@IntRange / @FloatRange
fun setVolume(@IntRange(from = 0, to = 100) volume: Int) {
// 볼륨 값이 0과 100 사이임을 보장
// ... 볼륨 설정 로직 ...
}
fun setAlpha(@FloatRange(from = 0.0, to = 1.0) alpha: Float) {
// 알파 값이 0.0과 1.0 사이임을 보장
// ... 알파 값 설정 로직 ...
}
@Size
배열이나 컬렉션, 문자열 등의 크기나 길이를 지정하는 데 사용 됨
@Size(min = 1)은 배열이나 컬렉션이 비어 있지 않아야 함을 나타냄
fun setNames(@Size(min = 1) names: List<String>) {
// names 리스트가 비어있지 않음을 보장
// ... 리스트 처리 로직 ...
}
@StringRes / @DrawableRes / @ColorRes
fun setTextFromResource(@StringRes resId: Int) {
val text = context.resources.getString(resId)
// ... 텍스트 처리 로직 ...
}
fun setImageFromResource(@DrawableRes drawableId: Int) {
val drawable = context.resources.getDrawable(drawableId, context.theme)
// ... 이미지 처리 로직 ...
}
'안드로이드 > 이론' 카테고리의 다른 글
[ 안드로이드 ] Multi ViewType RecyclerView ViewHolder 순서 고정하기 (0) | 2024.01.14 |
---|---|
[ 안드로이드 ] 앱 내에 개발자 모드 추가하기 2 (0) | 2023.12.29 |
[ 안드로이드 ] 앱 내에 개발자 모드 추가하기 (0) | 2023.12.08 |
[ 안드로이드 ] style.xml을 이용하여 공통 속성 정의하기 (0) | 2023.10.10 |
[ 안드로이드 ] View에 블러처리 하기 - BlurView 라이브러리 (0) | 2023.09.17 |