티스토리 뷰
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.
- Application 환경에 대한 전역 정보를 접근하기 위한 인터페이스.
- 추상 클래스이며 실제 구현은 Android 시스템에 의해 제공된다.
- Context를 통해 어플리케이션에 특화된 리소스나 클래스에 접근할 수 있다.
- Activity 실행, Intent 브로드캐스팅 그리고 Intent 수신 등과 같은 응용 프로그램 수준의 작업을 수행하기 위한 API를 호출 할 수 있다.
어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근
- Context 인터페이스가 제공하는 API 중 getPackageName(), getResource() 등의 메서드
안드로이드 시스템에서 제공하는 API 를 호출할 수 있는 기능
- startActivity(), bindService() 와 같음 메서드
Context 역할
Context는 어플리케이션과 관련된 정보에 접근하고자 하거나 어플리케이션과 연관된 시스템 레벨의 함수를 호출하고자 할 때 사용된다.
그런데 안드로이드 시스템에서 어플리케이션 정보를 관리하고 있는 것은 시스템이 아닌, AcitivityManagerService 라는 일종의 또 다른 어플리케이션이다.
따라서 다른 일반적인 플랫폼과는 달리, 안드로이드에서는 어플리케이션과 관련된 정보에 접근하고자 할 때는 AcitivityManagerService를 통해야만 한다.
당연히 정보를 얻고자 하는 어플리케이션이 어떤 어플리케이션인지에 관한 키 값도 필요하다.
즉, 안드로이드 플랫폼 관점에서 Context는 다음과 같은 두 가지 역할을 수행하기 때문에 꼭 필요하다.
- 자신이 어떤 어플리케이션을 나타내고 있는지 알려주는 ID 역할
- ActivityManagerService에 접근할 수 있도록 하는 통로 역할
Context 생성
Acitivy와 Service가 생성될 때 만들어지는 Context와 BroadcastReceiver가 호출될 때 (onReceive()) 전해지는 Context는 모두 서로다른 인스턴스이다.
즉, Context는 어플리케이션이 시작될 때는 물론, 어플리케이션 컴포넌트들이 생성될 때 마다 생성된다.
새롭게 생성되는 Context들은 부모와 완전히 독립되어 있는 존재가 아니고 ‘거의’ 비슷한 내용을 담고 있다.
Context 종류
안드로이드 프레임워크에서 Context는 2가지 종류로 나뉜다
- Application Context
- Activity Context
출처: https://shnoble.tistory.com/57 [노블의 개발이야기]
'Frontend > Android' 카테고리의 다른 글
Android Data Binding을 사용해보자 (0) | 2019.07.24 |
---|---|
Fragment View Pager 간단하게 구현하기 (0) | 2019.07.16 |
Activity의 4가지 Launch Mode에 대하여 (0) | 2019.06.10 |
Fragment 간의 데이터 전달 및 findViewById 사용하기 (0) | 2019.06.10 |
Retrofit2 사용해보기 (0) | 2019.05.31 |
- Total
- Today
- Yesterday
- ios
- 코틀린
- 안드로이드
- 함수형
- 애플워치
- Auto Layout
- 함수형프로그래밍
- retrofit
- Swift
- C++
- 아이폰
- 오토레이아웃
- watchos
- SwiftUI
- Apple Watch
- apple
- 컬렉션
- 알고리즘
- Kotlin
- Rxjava
- Elliotable
- CloudComputing
- XCode
- 스위프트
- Reactive programming
- java
- databinding
- android
- 상속
- Notissu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |