Android 개발을 하다보면 가장 자주 접하게 되는 Class는 단언컨데 Context다. 근데 대부분의 Android 개발자들은 사실 Context라는게 뭔지 제대로 알지 못한 상태에서 개발하고 있다. (아마 이 글을 읽고 있다면 공감할 확률이 메시가 이번 주말에 골을 넣을 확률만큼 높다) 그래서 Context라는게 뭔지 제대로 알아야 할 것 같아서 글을 쓰기 시작했다.

What can we do with Context?

  1. Can create views, adapters even listeners.
  2. Can access Standard Common Resources.
  3. Can access Components implicitly.
  4. What else?

그렇다. 우리는 Context가 있어야지 View나 Adapter를 생성할 수 있고, 필요한 이벤트를 도/감청 할 수 있음은 물론 Context는 System의 공유 자원에 접근 할 수 있게 해주고, Broadcast나 Intent를 실행시켜 은밀하게 외부 Component를 사용할 수 있게 해준다.

정리하고 보니 Context는 참 은혜로운 Class다. 그럼 Context가 뭔데 저렇게 전지전능한지 알아보자.


Context from Document

Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.

Context는 Android system이 제공하는 Abstract class로써,

1. Global Information에 대한 접근을 제공하고

eg) getSystemService() …

2. Application과 관련된 자원 또는 class에 접근할 수 있게 해주고

eg) getPackageName(), getAeests(), …

3. Activity 실행이나, Broadcasting, Intent 수신을 가능하게 해준다.



Android Platform 입장에서는 Context를 통해 Application과 Service들을 관리할 수 있게 해주고, Android Application 입장에서는 필요한 View/Adapter/Listener를 생성할 수 있게 해주는 동시에, Global information에 대한 접근을 가능하게 해주는 전지전능한 Class라고 할 수 있다.