본문 바로가기

안드로이드앱 코딩_AndroidApp/안스_코틀린_쪼개기

파편20_Context_컨텍스트

Context(컨텍스트)는 쉽게 말하면 '안드로이드 시스템과 앱에서 만든 컴퍼넌트를 연결해 주는 역할'을 하는 추상 클래스다.

그러므로 Context 라는 추상클래스는 컴퍼넌트에 대해 상위 클래스의 지위를 가지고 컴퍼넌트의 모든 기능과 Interface(상호작용)할 수 있는 함수를 가지고 있다.

 

다시 말해서 안드로이드 시스템은 컴퍼넌트의 기능을 Context라는 추상클래스를 통해 구현한다는 것이다.

 

예를 들어 컴퍼넌트 중 화면을 만드는 Activity(액티비티)에는 여러 구성요소(텍스트, 버튼 등)들이 있는데 이것은 XML코드로 작성된다. 이것을 View(뷰)객체로 만들면 화면에 보이게 된다. 이 과정을 안드로이드 시스템이 Context를 통해 구현하는 것이다. 왜 이것이 가능하냐면 Activity는 Context를 상속받기 때문이며 또한 Context가 이 기능을 가지고 있기 때문이다.

 

Context(컨텍스트)의 종류

 

1. Application Context(애플리케이션 컨텍스트) :

 

   애플리케이션과 관련된 기능을 가지고 있는 클래스이다. 컴퍼넌트에서 applicationContext를 호출하여 사용할 수 있다. 하나의 앱에서 하나의 인스턴스(객체)만 만들 수 있다.

 

2. Base Context(기초 컨텍스트) :

 

   컴퍼넌트(Acitvity, Service, Content Provider, Broadcast Receiver)의 기초가 되는 클래스이다. this 또는 baseContext 로 호출할 수 있다.

 

Context(컨텍스트)의 기능

컨텍스트에서 지원하는 기능들은 각 컴퍼넌트 마다 사용할 수 있는 것과 없는 것이 있다. 특히 화면과 관련된 3개의 기능은 Activity에서만 사용할 수 있다.

 

  Application Activity Service Content Provider Broadcast Receiver
Show a Dialog(다이얼로그 보이기) X O X X X
Start an Activity(액티비티 시작) X O X X X
Layout Inflation(레이아웃 객체 생성) X O X X X
Start a Service(서비스 시작) O O O O O
Bind to a Service(서비스 유지) O O O O X
Send a Broadcast
(브로드캐스트 메시지 보내기)
O O O O O
Register BroadcastReceiver
(브로드캐스트리시버 등록)
O O O O X
Load Resource Values
(리소스 값 불러오기)
O O O O O

 

Wraven...