일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 스택
- 다이나믹프로그래밍
- 카카오블라인드
- 알고리즘
- 배열
- 자바
- 그래프
- GIT
- 백준
- 코딩테스트
- 동적계획법
- 코틀린
- 코딩
- component
- 문자열
- dfs
- 프로그래머스
- 안드로이드
- 세그먼트트리
- activity
- 완전탐색
- BOJ
- 생명주기
- 트리
- BFS
- 문자열다루기
- 이분탐색
- 운영체제
- 분할정복
- Android
- Today
- Total
HS_development_log
Android - Context 본문
1. Context : Android Developer
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가 없으면 Activity, Broadcast, Service 등... 모든 게 불가
- 리소스에 대한 접근도 Context를 통해서만 가능
- Context는 Abstract 클래스입니다.
1-2. Android에서 Context를 사용하는 이유
-
안드로이드에서 프로세스와 애플리케이션은 서로 독립적으로 존재합니다.
-
안드로이드에서 프로세스는 OS 커널(리눅스)에서 관리됩니다.
-
애플리케이션에 관한 정보는 안드로이드 시스템 서비스 중 하나인 ActivityManagerService에서 관리합니다.
-
ActivityManagerService는 특정 토큰을 키값으로 Key-Value 쌍으로 이루어진 배열을 이용해 현재 작동 중인 애플리케이션 정보를 관리합니다.
-
따라서 안드로이드에서 애플리케이션과 관련된 정보를 얻기 위해서는 ActivtiyManagerService를 통해 야만 합니다.
1-3. 결론 : Context
-
자신이 어떤 애플리케이션을 나타내고 있는지 알려주는 ID역할
-
ActivityManagerService에 접근할 수 있도록 하는 통로 역할
따라서 Context는 process와 ActivityManagerService를 연결해주는 중간 매개체라고 할 수 있습니다. 또한 Context는 이 두 가지 역할을 수행함으로써
-
애플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근할 수 있게 함
-
안드로이드 시스템 서비스에서 제공하는 API를 호출할 수 있는 기능
이 두 가지 기능을 사용자에게 제공합니다.
2. Context : 종류
2-1. ApplicationContext
-
애플리케이션과 생명주기를 공유합니다. 따라서 애플리케이션이 살아있는 동안 변경되지 않으므로 싱글톤입니다.
-
getApplicationContext()를 통해 접근할 수 있습니다.
- ApplicationContext에 액티비티를 참조하면 액티비티가 사라져도 참조가 유지되므로 메모리 누수가 발생합니다.
- 액티비티를 벗어나거나 애플리케이션에 대해 참조를 오래 유지해야 할 경우 참조합니다.
2-2. ActivityContext
- 액티비티와 생명주기를 공유합니다. 액티비티가 사라지면 Context도 같이 사라집니다.
- getContext()를 통해 접근할 수 있습니다.
- 액티비티에 관련된 정보를 사용하고 싶을 때 사용합니다.
3. Context : 마무리
Context를 활용하는 좋은 방법
-
현재 작업 중인 컴포넌트에서 직접 사용할 수 있는 Context 사용
-
Context에 대한 참조가 해당 컴포넌트의 생명주기를 넘어서지 않으면 안전한 참조 유지 가능
-
액티비나 서비스 이외의 객체에서 Context 참조 시 ApplicationContext사용
참고사이트
'Android' 카테고리의 다른 글
Android - View , ViewGroup (0) | 2020.07.17 |
---|---|
Android - Thread (0) | 2020.07.17 |
Android - Activity Lifecycle (0) | 2020.06.29 |
Android - Fragment (0) | 2020.06.29 |
Android - Component (0) | 2020.05.24 |