Context가 무엇인지 가끔 질문이 들어오곤 하지만 명쾌하게 대답을 잘 못해준다.

그래서 이참에 Context란 무엇인지 정리를 하고 넘어가겠다.


일반적인 의미의 Conext란?

멀티 태스킹(Multi-Tasking)을 지원하는 운영체제에서 Task들은 운영체제가 정한 기준에 따라서 작업을 번갈아 가면서 수행한다. 이때, 해당 Task들의 수행상태를 기억하기 위해서 Task마다 실행 상태에 대한 정보를 구성하고 있는 것들을 Context라고 한다.


Android에서의 Context란?

Android System은 여러가지 형태의 실행 형식(Activity, Service...등)을 가지고 있다. 그래서 클래스 구현상 중복된 정보들이 있을 수 밖에 없다. 이러한 중복된 정보들을 줄이고 일원화 시키기 위해서 실행 클래스들의 상위 클래스로써 Context 클래스를 제공하고 있다.

따라서 Anroid System에서 모든 실행 형식을 가지는 클래스들은 Context 클래스에서 상속을 받아 설계되어 있기 때문에 다형성을 적용하여 코드를 통일성있게 표현할 수 있다.

결론적으로 Android System에서 Contexdt 클래스는 다형성을 사용할 목적으로 구현되었기 때문에 대부분의 함수들이 추상 메서드로 선언되어 있고 그 자신도 추상 클래스다.


Context 얻어오는 방법?

1. getBaseContext()

ex) Context context = getBaseContexdt(); // 생성자나 Context에서 기본 BaseContext

- 앱 종료 후 메모리에서 제거


2. getApplicationContext()

ex) Context context = getApplicationContext() // Global한 Context

- 특정한 Activity에 묶여 있지 않아서 쭉 살아 있다

- application이 kill되거나 재시작될 때마다 변경



3. (Activty 이름).this

ex) HelloworldActivity.this

- Activity가 destroy되거나, 다시 생성될 때마다 변경


Context 종류는?

 

 

[출처] http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=967

[출처] http://wengdiiiy.tistory.com/1


WRITTEN BY
김치치즈스마일
세계정복!

,