본문 바로가기
카테고리 없음

안드로이드 독학 21일차 : Context란?

by 욱파이어니어 2021. 7. 7.
728x90
반응형

Context에 대해서 알아보게 된 경위는 리사이클러 뷰 예제 소스를 분석하다가 Context라는것은 무엇인가 궁금해져서 알아보게 되었다.( Context는 매개변수 인자로 자주 넣기 때문에 알아둬야 한다.)

 

Context란?

애플리케이션이나 객체의 현재 상태를 나타내주고 애플리케이션의 자원이나 클래스에 접근할수 있게 해주는 

추상 클래스이다.

 

이렇게 설명해주면 이해가 어려울수 있으니 실생활에 맞는 예시를 들어주겠다. 

context는 전화번호부와 같은 역할을 한다.

많은 전화번호를 가지고 있고 그 전화번호에 접근을 할수 있게 해줄수 있게 해주는 것처럼 애플리케이션의 자원에 접근할수 있게 해주고 현재 상태를 가져올수 있다.

 

 


 

Context의 종류

 

Application Context

 

애플리케이션 컨텍스트는 싱글톤 인스턴스이며 액티비티에서 getApplicationContext()를 통해 접근할수 있다.

애플리케이션 컨텍스트는 application 생명주기에 맞춰져 있어 애플리케이션이 종료 될때까지

Application의 정보에 접근할수 있게 해주는 객체이다.

따라서 Application Context 같은 경우는 애플리케이션 전체에서 사용할 라이브러리를 필요로 할때 

Application Context를 전달해주면 된다.

그리고 싱글톤 객체를 생성하고 해당 객체가 Context가 필요하다면 Application Context를 전달해줘야 한다.

왜냐하면 Activity Context를 전달해주게 되면 계속해서 해당 액티비티를 참조하기 때문에 메모리 누수가 발생하기 때문이다.

 

 

Acticity Context

 

액티비티 Context는 액티비티의 생명주기에 접목이 된다. 따라서 해당 액티비티 내에서만 사용이 가능하고 

해당 액티비티가 종료되면 같이 종료된다. 따라서 현재 액티비티가 연관되어야 하는 Context가 필요할때 

Activity Context를 사용해야 한다.

 

 


 

Context 사용법

 

this

Activity Context를 반환하고 같은 Activity 범위라면 this를 사용해서 Context를 가져올수 있다.

그리고 Activity를 벗어났다면 액티비티명.this 를 사용하면 된다.

 

getApplicationContext()
Application Context를 반환한다.

 

getApplication()
Application Context를 반환한다. Application도 Context의 자식 클래스이므로 Context처럼 사용할 수 있다.

 

getBaseContext()
ContextWrapper의 Context 인스턴스를 반환한다.

다른 Context를 참조해야 하는 경우, 그 ContextWrapper 안에 있는 context를 getBaseContext()로 가져와 사용한다.

이는 Activity Context의 일종이다.

 

View의 getContext()
View에도 getContext() 메서드가 있어 Context를 가져올 수 있는데,

View를 생성할 때 생성자의 인자로 들어가는 Context가 getContext()의 결과로 반환된다.

일반적으로 View가 속해 있는 Activity의 Context가 해당 View의 Context가 된다.

 

 

 

 

참고 사이트 : https://s2choco.tistory.com/10

 

[Android] Context 제대로 알고 사용하자!

안드로이드에서 Context는 가장 많이 등장하고, 그만큼 핵심이 되는 개념이기 때문에 제대로 알고 사용하는 것이 좋다. 이번 포스팅에서는 Context의 역할 및 종류와 언제 사용하면 좋은지 알아 보

s2choco.tistory.com

 

 

 

 

반응형