Android Context class

홍성덕·2024년 8월 2일

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.

Android Context에 대한 공식문서의 설명은 위와 같다. 번역하면 다음과 같다.

애플리케이션 환경에 대한 전반적인 정보를 제공하는 인터페이스이다. 안드로이드 시스템에 의해 구현되는 추상 클래스이다. 애플리케이션에 특화된 리소스와 클래스에 접근할 수 있게 해주며, 액티비티 시작, 인텐트 방송 및 수신 등 애플리케이션 레벨의 작업에 대한 up-call을 가능하게 한다.

번역한 내용을 한문장 한문장 자세히 살펴보겠다.

1. 애플리케이션 환경에 대한 전반적인 정보를 제공하는 인터페이스이다.

애플리케이션 환경에 대한 전반적인 정보를 제공하는 인터페이스로 애플리케이션의 리소스, 데이터베이스, 프리퍼런스 등 전반적인 정보를 제공한다.

여기서 사용된 인터페이스라는 말은 Java나 Kotlin 언어의 interface라는 의미가 아니다. 일반적인 인터페이스의 개념으로, 다른 시스템이나 컴포넌트와 상호작용하는 방법이나 경로를 의미한다. 바꿔 말하면, 우리가 애플리케이션에 대한 정보를 얻기 위해서는 Context와 상호작용해야 한다는 의미이다. Context는 실제로는 interface가 아닌 abstract class이다.

2. 안드로이드 시스템에 의해 구현되는 추상 클래스이다.

안드로이드 시스템에 의해 구현되는 추상 클래스라는 말은, Context가 추상 클래스이기 때문에 안드로이드 시스템이 클래스의 구체적인 구현을 제공한다는 의미이다. 예를 들면 Activity, Application 클래스는 Context의 서브클래스이다. 하지만 안드로이드 시스템이 Activity, Application 클래스를 제공하는 것이지, 개발자가 직접 Context를 상속하여 클래스를 만드는 것이 아니다.

3. 애플리케이션에 특화된 리소스와 클래스에 접근할 수 있게 해주며

애플리케이션에 특화된 리소스는 예를 들면 문자열 리소스, 이미지 리소스, 레이아웃 파일 등이 있다.

// 문자열 리소스 접근
val string = getString(R.string.app_name)

// 이미지 리소스 접근
val drawable = ResourcesCompat.getDrawable(resources, R.drawable.ic_launcher_foreground, null)

애플리케이션에 특화된 클래스는 예를 들면 시스템 서비스, 프리퍼런스 접근 등이 있다.

// 시스템 서비스 접근 (위치 서비스)
val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager

// 프리퍼런스 접근
val sharedPreferences = getSharedPreferences("my_prefs", Context.MODE_PRIVATE)

4. 액티비티 시작, 인텐트 방송 및 수신 등 애플리케이션 레벨의 작업에 대한 up-call을 가능하게 한다.

우선 up-call은 kernel 혹은 프레임워크 같은 하위 레벨에서 애플리케이션 코드 같은 상위레벨에 대한 호출(call)을 말한다. 안드로이드 Context 클래스에서 up-call은 애플리케이션 레벨의 작업을 수행하기 위해 시스템이 애플리케이션 코드에 특정 작업을 요청하는 것을 의미한다.


이렇게 Context 클래스에 대한 설명을 자세히 살펴보았는데, 핵심적인 설명은 사실상 1번 문장인 "애플리케이션 환경에 대한 전반적인 정보를 제공하는 인터페이스이다" 라는 설명이다.


참고자료

profile
안드로이드 주니어 개발자

0개의 댓글