반응형
기존 상수 관리에는 2가지 방법이 있다.
1. 클래스 하나를 생성한 후 상수를 넣는 방법
- 장점
- 시스템 메모리를 적게 차지
- 단점
- 코드상으로 안전 장치가 없음
2. Enum으로 관리하는 방법
- 단점
- 그냥 상수보다 시스템 메모리를 약 13배 차지(int의 경우)
- 런타임 메모리 오버헤드 증가
- 장점
- 컴파일, 런타임 단계에서 체크 가능
안드로이드에서는 이러한 두 가지 방법의 장점을 둘 다 이용하기 위해 TypeDef라는 Annotation을 제공하고 있으며 또한 Proguard에서도 Enum 타입에 대한 최적화를 도와준다고 한다. 다만 proguard를 이용하는 방법은 완벽한 최적화를 보장하지 않기 때문에 최대한 TypeDef를 이용하는 것이 좋을 것 같다.
TypeDef를 이용하는 방법은 다음과 같다. String 역시 IntDef 대신 StringDef로 수정하고 int 상수를 String 상수로 대체하면 된다. 다음은 대표적인 예인 View의 소스 코드 중 일부이다.
class View {
@IntDef({VISIBLE, INVISIBLE, GONE})
@Retention(RetentionPolicy.SOURCE)
public @interface Visibility {}
public static final int VISIBLE = 0x00000000;
public static final int INVISIBLE = 0x00000004;
public static final int GONE = 0x00000008;
}
참고 : https://www.youtube.com/watch?v=Hzs6OBcvNQE&feature=youtu.be
반응형
'Android > 기타' 카테고리의 다른 글
[Android] 인앱 결제가 안 될 때 체크해야 할 사항 (0) | 2020.03.03 |
---|---|
[Android] Retrofit2 Gson 사용 시 주의사항 (0) | 2020.02.28 |
[Android] 앱 디자인 참고 (0) | 2019.12.20 |
[Android] Firebase Analytics, Crashlytics 연동하기 (0) | 2019.08.29 |
[Android] 안드로이드 투명도 계산기(Android Opacity Calculator) (0) | 2019.07.04 |