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



Posted by 소망아기
: