마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Intent constructor의 parameter로 this와 getApplicationContext()

0 추천

안드로이드를 공부한지 얼마 안됬는데 궁굼한점이 있습니다. 

책에서는 

Intent intent = new Intent(getApplicationContext(),AnotherActivity.class);

이런식으로 intent 인스턴스를 초기화 해줬는데, 구글링해보니 

Intent intent = new Intent(this,AnotherActivity.class); 

이런식으로 this로 파라미터로 전달하기도 하더라구요. 

 

여기서 궁굼한 내용입니다. 

1. doc을 보니까 저 자리는 Context 인스턴스로 받아야하는 자리인것 같은데, this가 의미하는 것이 인스턴스 자기 자신인데 

여기서는 'Context 인스턴스'가 '인스턴스 자신'을 의미하는 건가요? 

2.  그리고 this를 사용하는것과 getApplication()을 사용하는것 사이에는 어떤 차이가 있나요? 

예를 들면, 인스턴스 자기자신이 아니라 application 전체의 Context를 받아와야 하는 경우도 있을 것 같습니다. 

 

 

uuni (770 포인트) 님이 2016년 4월 15일 질문

2개의 답변

+3 추천
 
채택된 답변

라이프 사이클이 다릅니다.

ApplicationContext와 this를 사용하면 기본적으로 Context 의 인스턴스 이지만

ApplicationContext는 Application lifecycle

this는 Activity lifecycle에 해당하기 때문에 구분해서 사용해주시는 것이 좋습니다.

각 Context가 어떤 곳에서 어떻게 사용될 수 있는지는 다음의 링크를 참조하시면 좋을 것 같습니다.

https://possiblemobile.com/2013/06/context/

블럭 (1,700 포인트) 님이 2016년 4월 15일 답변
uuni님이 2016년 4월 15일 채택됨
감사합니다. life cycle의 차이었군요 배워갑니다:)
0 추천
Context를 상속받는 클래스의 경우 this로 사용 가능한 것입니다. 모든 클래스가 this Intent를 생성할 수 없습니다. 대표적으로... Activity, Service의 경우 Context를 상속받았기 때문에 this가 가능합니다.
libre2k (7,420 포인트) 님이 2016년 4월 15일 답변
Activity가 Context를 상속했기 때문에 this를 사용할 수 있는거였군요! 감사합니다 :)
...