"getApplicationContext()" 알아보기(펌)
- 폐기자료/날림 코딩공부
- 2020. 3. 4.
안드로이드 스튜디오에서 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 |