외할아버지의 디지털생활
컴퓨터 관련/안드로이드 어플개발

this와 getApplicationContext()의 차이점은?

2023. 5. 1.

안드로이드 스튜디오에서 context가 들어가야 할 곳에 this를 넣을때도 있고, getApplicationContext()를 넣을때도 있습니다.

신기한게 둘중 뭘 넣더라도 대부분 잘 돌아갑니다.

둘의 차이는 뭘까요?

getBaseContext(), getApplication()도 함께 살펴보도록 하겠습니다.

 

stackoverflow 사이트에 비슷한 질문이 올라왔는데, 좋은 답변이 있더군요 ㅎㅎ

제가 해석한 토대로 써보겠습니다.

 

 

두 종류의 Context

 

안드로이드에는 두 종류의 context가 있습니다.

Applicaiton context : 어플리케이션 자체와 연동되는 것이므로, 어플리케이션의 life cycle이 지속되는 동안 동일한 객체입니다. 즉, 어플리케이션을 종료 후 다시 실행시킬때에만 바뀌는 것이지요.

Activity context : 액티비티와 연동된 것이므로, 그 액티비티를 파괴시키고 다시 시작시키면 activity context도 바뀝니다(한 개의 어플리케이션 내에는 여러 액티비티를 넣을 수 있지요).

 

 

this와 getApplicationContext()의 차이점

 

그렇다면 this와 getApplicationContext()의 차이점은 무엇일까요?

 

이름에서 알 수 있듯이, getApplicationContext()가 application context를 가리키는 것이고,

this가 activity context를 가리키는 것입니다.

 

두 종류의 context 중 어느 context를 써도 대부분 별 문제 없는 상황이므로

this를 써도 정상적으로 작동되고, getApplicationContext()를 써도 잘 작동하는 것입니다.

 

this로 오류가 날때는 해당 액티비티가 없어서 그런 것이므로, getApplicationContext()를 넣으면 작동합니다.

 

 

getBaseContext(), getApplication()은 뭔가요? 

 

this = getBaseContext() = Activity Context

getApplicationContext() = getApplication() = Application Context

 

으로 보시면 됩니다.

댓글