"getApplicationContext()" 알아보기(펌)

출처 https://maternalgrandfather.tistory.com/entry/this%EC%99%80-getApplicationContext%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80

 

안드로이드 스튜디오에서 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

 

으로 보시면 됩니다.

'폐기자료 > 날림 코딩공부' 카테고리의 다른 글

7-2 뷰만들기/do it 안드로이드  (0) 2020.04.13
자바 설명만드는중...  (0) 2020.03.11
안슈 /4강/for 문, Integer.parseint  (0) 2020.02.21
안슈 /3강 /for문 활용 2  (0) 2020.02.21
안슈 3강/for 문 활용1  (0) 2020.02.21

댓글

Designed by JB FACTORY