context란 추상클래스로 Application environment의 global한 정보에 접근하기 위한 인터페이스이다.
context란 어플리케이션(객체)의 현재 상태의 맥락을 의미한다.
Aplication Context는 싱클톤 인스턴스이며 액티비티에서 getApplicationContext()
를 통해 접근할 수 있다. 이 Context는 애플리케이션의 라이프 사이클과 연결되어 있으며, Application Context는 현재의 Context와 분리된 라이프 사이클을 가진 Context가 필요할 때나 액티비티의 범위를 넘어서 Context를 전달할 때 사용한다.
Activity Context는 액티비티에서 사용 가능하며, 이 Context는 액티비티의 라이프 사이클과 연결되어 있다. 액티비티의 범위 내에서 Context를 전달하거나, 라이프 사이클이 현재의 Context에 attach된 Context가 필요할 때 Activity Context를 사용할 수 있다.
context는 TV를 조종하는 리모컨이라고 생각할 수 있다. TV를 앱이라고 한다면 TV의 다양한 채널들은 앱의 자원들이라고 할 수 있다.
리모컨은 TV의 다양한 채널(자원)들에 접근할 수 있게 해준다.
리모컨은 자원에 접근할 수 있게 해주는 역할을 하기 때문에 리모컨을 가진 사람은 당연히 자원에 접근할 수 있다.
context를 얻는 방법으로는 getApplicationContext(), getContext(), getBaseContext() 혹은 this(Context를 확장한 class의 경우)등이 존재한다.
//this -> 리모콘 (context)
TextView tv = new TextView(this);
View.getContext()
Activity.getApplicationContext()
ContextWrapper.getBaseContext()
this