안드로이드 스튜디오에서 context가 들어가야 할 곳에 this를 넣을때도 있고, getApplicationContext()를 넣을때도 있습니다.
신기한게 둘중 뭘 넣더라도 대부분 잘 돌아갑니다.
둘의 차이는 뭘까요?
getBaseContext(), getApplication()도 함께 살펴보도록 하겠습니다.
안드로이드에는 두 종류의 context가 있습니다.
Applicaiton context : 어플리케이션 자체와 연동되는 것이므로, 어플리케이션의 life cycle이 지속되는 동안 동일한 객체입니다. 즉, 어플리케이션을 종료 후 다시 실행시킬때에만 바뀌는 것이지요.
Activity context : 액티비티와 연동된 것이므로, 그 액티비티를 파괴시키고 다시 시작시키면 activity context도 바뀝니다(한 개의 어플리케이션 내에는 여러 액티비티를 넣을 수 있지요).
그렇다면 this와 getApplicationContext()의 차이점은 무엇일까요?
이름에서 알 수 있듯이, getApplicationContext()가 application context를 가르키는 것이고,
this가 activity context를 가르키는 것입니다.
두 종류의 context 중 어느 context를 써도 대부분 별 문제 없는 상황이므로
this를 써도 정상적으로 작동되고, getApplicationContext()를 써도 잘 작동되는 것입니다.
this로 오류가 날때는 해당 액티비티가 없어서 그런 것이므로, getApplicationContext()를 넣으면 작동됩니다.
요약 :
this = getBaseContext() = Activity Context
getApplicationContext() = getApplication() = Application Context