영드로이드개발자
용이의 개발블로그
영드로이드개발자

블로그 메뉴

  • ⭐️ Home
  • 💻 GitHub
  • ❤️ Instagram
  • 👍 LinkedIn
  • 분류 전체보기 (44)
    • 공지사항 (1)
    • Daily 공부방 (0)
    • 프로그래밍 언어 (8)
      • Java (7)
      • Kotlin (1)
    • 안드로이드(Kotlin) (16)
    • 코딩테스트(Java) (11)
      • 기초 자료구조 (3)
      • 백준 (0)
      • 프로그래머스 1단계 (5)
      • 프로그래머스 2단계 (3)
    • 알고리즘 정리 (5)
    • 주간 목표계획 및 회고 (2)
    • Project (1)
      • Android App - 오마이코인 (1)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
영드로이드개발자
안드로이드(Kotlin)

Kotlin 코틀린의 Context

Kotlin 코틀린의 Context
안드로이드(Kotlin)

Kotlin 코틀린의 Context

2022. 8. 8. 09:46
반응형

Context

우선 공식문서에 따른 Context의 정의는

이렇게 정의되어있다. 영어로 정의되어있는 내용을 한국어로 해석하여 이해할때 여러 어려움이 존재한다.

그에 따라 지금부터 Context의 대한 내용을 조금더 찾아보며 정리하겠다.

 

Context 란?

Context 는 뜻 그대로 해석한다면 애플리케이션 현재 상태의 맥락(Context)를 뜻한다.

새롭게 생성된 객체가 지금 무슨일이 일어나고 잇는지를 알 수 있도록 한다.

그에 따라 애플리케이션과 액티비티에 대한 정보를 얻기 위해서는 Context를 사용하면 된다.

 

Context는 크게 두가지의 역할을 하고 있는 추상 클래이이다.

  1. 앱에 관하여 시스템이 관리하고 있는 정보에 접근한다. (resource , class , 애플리케이션 환경 정보)
  2. 안드로이드 시스템 서비스에서 제공하는 API 호출 ( startActivity() , bindService() )

종류

Application Context

  • Application 생명주기에 귀속된다.
  • 싱글톤 - 앱이 죽기 전까지 동일한 하나의 객체를 반환한다.
  • getApplicationContext() 를 통해 접근한다.
  • 어떠한 Context보다도 오래 유지된다.

Activity Context

  • Activity 생명주기에 귀속된다.
  • getContext() 를 통해 접근한다.
  • Activity의 범위 내에서 Context를 전달한다.

 

그렇다면 어떤 Context를 언제 사용해야할까?

데이터베이스를 관장하는 AppDatabase 처럼 싱글톤으로 존재하는경우 초기화할때 context가 필요하게 되는데 그때 activity context로 전달하게 된다면 Activity의 생명주기에 따라 어느 시점에 context는 소멸이 될것이다.

하지만 AppDatabase는 싱글톤이기 때문에 해당 Activity Context를 지속적으로 참조하게 되어 메모리 누수가 발생되게 된다. 이럴때는 Application Context 를 사용하는것이 바람직하고

GUI에 관련된 것들에는 Application Context가 정상적으로 동작하지 않을 수 있기 때문에 무조건적으로 Application Context를 쓰는것 또한 바람직하지 않다.

 

생명주기에 따른 범위(Scope)를 명심하여 Context를 참조하여야 한다.

반응형
저작자표시 비영리 변경금지 (새창열림)

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

Kotlin 코틀린의 RecyclerView  (0) 2022.08.25
Kotlin 코틀린의 SharedPreferences  (0) 2022.08.08
Kotlin 코틀린의 Handler 와 Looper  (0) 2022.08.04
Kotlin 코틀린의 Intent와 Inflate  (0) 2022.08.04
Kotlin 코틀린의 Layout  (0) 2022.08.04
  • Context
  • Context 란?
  • 종류
'안드로이드(Kotlin)' 카테고리의 다른 글
  • Kotlin 코틀린의 RecyclerView
  • Kotlin 코틀린의 SharedPreferences
  • Kotlin 코틀린의 Handler 와 Looper
  • Kotlin 코틀린의 Intent와 Inflate
영드로이드개발자
영드로이드개발자
도전을 즐기는 안드로이드 개발자 현영우의 개발 Blog

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.