안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드를 개발하다 보면,
1. Toast.makeText(this, result_msg, Toast.LENGTH_SHORT).show();
2. Toast.makeText(Activity_Main.this, result_msg, Toast.LENGTH_SHORT).show();
Toast의 첫번째 인자에 this와, Activity.this 이렇게 적어 줘야 할 경우가 있었습니다.
2번의 경우는 내부 클래스에서 사용할 경우 저렇게 부모의 Activity명을 적어 주게 되는거 같은데요..
3. Toast.makeText(getApplicationContext(), result_msg, Toast.LENGTH_SHORT).show();
이 경우 getApplicationContext()로 context를 가져오게 됩니다.
그런데 아래의 두 경우
getApplication()으로 Activity를 가져오는 경우와
getApplicationContext()로 Context를 가져오는 경우....
Context와, Activity의 차이점이 궁금한데,, 잘 못찾겠어요~




Activity extends Context 입니다. Activity도 Context인 것이죠
Context는 안드로이드 시스템과의 연결통로와 동시에 어플리케이션 리소스에 접근할 수 있는 통로 라고 볼 수 있는데 Activity는 이런 Context를 상속받아 구현하는 컴포넌트중 하나입니다. getResources()로 해당 어플리케이션 리소스에 접근할 수 있고 registerReceiver()로 시스템에 브로드캐스트 리시버를 등록하는 행위를 생각해보시면 될듯합니다.
Activity와 비슷하게 이런 Context를 상속받는 것을 살펴보면 Application, Service 등이 있습니다. 공통점을 보면 다 프로세스화 될 수 있는 컴포넌트 라는 겁니다. 이렇게 프로세스화 될 수 있는 컴포넌트는 시스템에도 접근이 가능해야 하고 자신이 소속된 어플리케이션의 리소스에도 접근이 가능해야 합니다. 이런 중간 인터페이스가 바로 Context 인것죠