코딩하는 개굴이

Context란? 본문

안드로이드

Context란?

개굴이모자 2021. 2. 21. 22:25
반응형

본 내용은 스스로의 정리를 위한 문서임을 알립니다.

Context란?

  • Context의 정의
    • 애플리케이션 환경에 관한 정보를 접근하기 위한 인터페이스
    • Abstract 클래스로 실제 구현은 안드로이드 시스템에 의해 제공된다.
    • Context를 통해 애플리케이션에 특화된 리소스, 클래스에 접근할 수 있다.
    • 시스템이 관리하고 있는 애플리케이션 정보에 접근
    • 안드로이드 시스템 서비스에서 제공하는 API 를 호출
      • getResource, get~~ 와 같은 애들, startActivity 등
  • Context가 필요한 이유
    • C# 등에서는 System.AppDomain... 등의 방법으로 정적 함수로 제공되는 시스템 API 를 호출 할 수 있다.
    • 안드로이드에서는 Context에 정의된 인스턴스 함수를 호출해야만 가능하다.
    • 차이가 생기는 이유 : OS 커널이 프로세스를 관리해주지만, 안드로이드의 경우는 어플리케이션과 프로세스는 독립적으로 존재하여 멀티태스킹 된다. (프로세스가 없는 상황에서도 애플리케이션은 살아있는 것처럼 사용자에게 표시되거나, 메모리가 부족하면 프로세스가 강제로 종료하는 등)
    • 안드로이드 OS 도 커널(리눅스)에서 관리되지만, 어플리케이션 정보는 ActivityManagerService 에서 (key, Value)쌍으로 관리되므로, key 값을 이용해 여기서 정보를 얻는 브릿지의 역할을 한다.
    • 애플리케이션 하나하나를 프로세스라고 한다면, 자신임을 인증하고 데이터를 가져오기 위해서 Context를 id 카드와 같이 사용한다. (경우에 따라서 자신의 권한을 다른 애플리케이션에게 너겨줄 수 있다. -> PendingIntent)

Context의 생성

  • 하나의 애플리케이션을 구성하는 주 컴포넌트들은 서로 다름을 유의해야한다. (Activity, Service, BroadcastReceiver -> 완전히 다르지는 않지만 다르다.)
  • Activity 와 Service 가 생성될 때 만들어지는 Context와 BroadcastReceiver 가 호출될 때 전해지는 Context는 각 애플리케이션 컴포넌트들이 생성될 때 마다 생성된다.

참고 링크

반응형

'안드로이드' 카테고리의 다른 글

LayoutInflater란  (0) 2021.02.21
jadx-gui 맥에서 설치하기  (0) 2021.02.21
Retrofit 과 Volley 에 대하여  (0) 2021.02.21
CI / CD  (0) 2021.02.21
[안드로이드] 디자인 패턴 겉핥기 (MVC, MVP, MVVM)  (0) 2020.11.05
Comments