Context 클래스
Android/Class 2017. 10. 10. 10:48 |안드로이드 Context는 추상 클래스이고 직접 상속한 것은 ContextWrapper이고 ContextWrapper를 상속한 것은 Activity, Service, Application이다
Context와 하위 클래스
Activity, Service, Application 컴포넌트는 각각 생성된 ContextImpl을 하나씩 래핑하고 있고 getBaseContext()는 각각 ContextImpl 인스턴스를 리턴한다. 반면 getApplicationContext()는 Application 인스턴스를 리턴하는 것으로 Application은 앱에서 1개밖에 없고 동일한 인스턴스를 반환한다
Activity를 예로 들어보면 사용 가능한 Context 인스턴스는 3개가 있다
1. Activity 인스턴스 자신 (this)
2. getBaseContext()를 통해 가져오는 ContextImpl 인스턴스
3. getApplicationContext()를 통해 가져오는 Application 인스턴스. Activity의 getApplication() 메서드로 가져오는 인스턴스와 같다
3개의 인스턴스가 다르기 때문에 캐스팅을 함부로 하면 안 된다. 이를테면 getBaseContext()로 가져온 것을 Activity로 캐스팅하면 ClassCastException이 발생한다
참고로 View 인스턴스의 Context는 Activity이다
[출처] : http://horajjan.blog.me/221111512206
'Android > Class' 카테고리의 다른 글
[VelocityTracker] 드레그 속도에 따른 이벤트 처리 (0) | 2017.11.27 |
---|---|
[TouchDelegate] 터치영역 확장 (0) | 2016.02.29 |
[Android] Nested RecyclerView 만들기 (0) | 2015.12.17 |
WeakReference & SoftReference (0) | 2015.11.20 |
[View] void onMeasure / View.MeasureSpec (0) | 2015.11.02 |