Android 공부 - Context란?
안드로이드를 공부하던중, 빈번히 나오지만 도대체 정체가 뭔지 감이 안잡히는, Context에 대해 알아보려 합니다.
우선 그를 호출하는 예들 중 하나는 다음과 같습니다.
위의 코드에는 MainActivity.this가 Context에 대응되고 있습니다. (AlertDialog.Builder)
우선 Android Developers 문서를 찾아보면, 다음과 같이 써 있습니다.
Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
Context는,
i) 어플리케이션 환경에 대한 전역 정보를 위한 인터페이스이며,
ii) 안드로이드 시스템에 의해 제공된 implementation을 가지고 있는 abstract class이며,
iii) 액티비티의 실행, 브로드캐스팅, 인텐트 받기같은 어플리케이션 레벨의 구동을 위한 낮은 레벨로부터의 요청(up-calls)을 가능케 할 뿐 아니라, 어플리케이션의 특정한 자원과 클래스에 접근가능하게 합니다.
라는 설명입니다.
이를 통해 Context란 어플리케이션의 특정의 자원, 클래스, 정보 접근과 up-call을 위한 것임을 유추할 수 있습니다. 제 생각엔 이는 사람으로 비유하자면 주민등록증 같은것 같습니다. 주민등록증을 들고 동사무소에 가서 인적사항을 알아내고(매서드 호출), 나라에서 예비군을 부르려 열람(up-call)수도 있겠죠.
그렇다면 그 Context는 어떻게 부르고 이용할 수 있을까요?
이제까지는 크게 두가지 방법을 통해 Context를 사용하였는데요, 하나는 getApplicationContext()를 호출하는 것이랑, 맨 위의 코드 처럼 MainActivity.this를 이용하는 것입니다. 허나 둘은 다른 Context인데요, getApplicationContext()는 ApplicaionContext를 반환하는 함수로써, 어플이 끝나기 전까지 지속되는 Context입니다. 그와 대비되게 MainActivity.this는 Activity Context를 이용한 것으로써, Activity가 끝나면 없어지는 Context로, MainActivity.this같은 경우는 MainActivity라는 Acitivty의 Context를 받아온 것 입니다.
참고 문헌 :
https://developer.android.com/reference/android/content/Context.html
https://en.wiktionary.org/wiki/upcall
http://arabiannight.tistory.com/entry/272
https://stackoverflow.com/questions/22966601/what-is-different-between-mainactivity-this-vs-getapplicationcontext
우선 그를 호출하는 예들 중 하나는 다음과 같습니다.
1
|
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
| cs |
우선 Android Developers 문서를 찾아보면, 다음과 같이 써 있습니다.
Context
java.lang.Object | |
↳ | android.content.Context |
Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
Context는,
i) 어플리케이션 환경에 대한 전역 정보를 위한 인터페이스이며,
ii) 안드로이드 시스템에 의해 제공된 implementation을 가지고 있는 abstract class이며,
iii) 액티비티의 실행, 브로드캐스팅, 인텐트 받기같은 어플리케이션 레벨의 구동을 위한 낮은 레벨로부터의 요청(up-calls)을 가능케 할 뿐 아니라, 어플리케이션의 특정한 자원과 클래스에 접근가능하게 합니다.
라는 설명입니다.
이를 통해 Context란 어플리케이션의 특정의 자원, 클래스, 정보 접근과 up-call을 위한 것임을 유추할 수 있습니다. 제 생각엔 이는 사람으로 비유하자면 주민등록증 같은것 같습니다. 주민등록증을 들고 동사무소에 가서 인적사항을 알아내고(매서드 호출), 나라에서 예비군을 부르려 열람(up-call)수도 있겠죠.
그렇다면 그 Context는 어떻게 부르고 이용할 수 있을까요?
이제까지는 크게 두가지 방법을 통해 Context를 사용하였는데요, 하나는 getApplicationContext()를 호출하는 것이랑, 맨 위의 코드 처럼 MainActivity.this를 이용하는 것입니다. 허나 둘은 다른 Context인데요, getApplicationContext()는 ApplicaionContext를 반환하는 함수로써, 어플이 끝나기 전까지 지속되는 Context입니다. 그와 대비되게 MainActivity.this는 Activity Context를 이용한 것으로써, Activity가 끝나면 없어지는 Context로, MainActivity.this같은 경우는 MainActivity라는 Acitivty의 Context를 받아온 것 입니다.
참고 문헌 :
https://developer.android.com/reference/android/content/Context.html
https://en.wiktionary.org/wiki/upcall
http://arabiannight.tistory.com/entry/272
https://stackoverflow.com/questions/22966601/what-is-different-between-mainactivity-this-vs-getapplicationcontext
Comments
Post a Comment