[Android] Context

ideal dev·2023년 2월 11일
1

context , 안드로이드 앱 개발을 시작했다면 한 번은 마주쳤을 단어입니다.
이가 무엇을 뜻하는 지 부터 알아봅시다.


Android Studio 에서의 Context

Context 의 사전적 정의는 맥락, 문맥입니다.
그럼 Android Studio 에서의 Context애플리케이션의 맥락이 되겠네요!

무슨 기능을 하죠 ?

  • Context는 애플리케이션의 맥락으로 어플리케이션의 현재 상태를 갖고 있습니다.
  • 따라서 시스템이 관리하고 있는 어플리케이션, 액티비티의 정보 를 얻을 수 있는데요.
    • 어플리케이션 정보Application Context 로,
    • 액티비티 정보Activity Context 로 얻을 수 있음

Application 과 Activity 이 기능이 다르듯
Application ContextActivity Context의 기능도 굉장히 다른데 어떻게 다른 지도 보겠습니다.

( Application과 Activity 둘 다 Context를 확장한 서브클래스 입니다)


Application Context

Application

네 맞습니다, Manifest.xml 에서 당당히 맨 윗자리를 차지한 그 Application
Context를 확장한 Application 클래스

Application Context

  • 안드로이드 애플리케이션 그 자체로, 현재 애플리케이션 상태를 표현합니다.
    • ( 애플리케이션의 생명주기를 나타냅니다. )
    • ex) MyApplication 라는 클래스가 있다면, Application context는 MyApplication 전용 인스턴스 입니다.

언제 사용해 ?

  • 생명주기가 현재 Context와 분리된 Context가 필요할 때
  • Activity 범위보다 큰 Context를 전달할 때

주의점

  • Application의 범위는 Activity보다 크기 때문에 만약 Application 내에서 Activity를 참조하게 되면 메모리 누수가 발생합니다!
  • 앱개발에 사용되는 많은 라이브러리들이 초기화에 Context가 필요한데 이때 Activity가 아닌 Application을 일반적으로 요구하는 이유가 바로 이점입니다.

Activity Context

Activity

Activity Context

  • Activity 이자, Activity를 표현합니다.
    • (Activity의 생명주기에 묶입니다 )
    • ex) MainActivity 라는 클래스가 있다면 Activity Context는 MainActivity 전용 인스턴스 입니다.

언제 사용해 ?

  • Activity 범위 안에서 동작이 끝나는 작업을 할 때 사용
  • GUI와 관련된 작업에 컨텍스트가 필요한 경우 사용
    (UI 와 관련된 동작들, Toast, dialog 등)

✓ 그림으로 이해

여러개의 Activity 와 하나의 Application 으로 동작하는 일반적인 구조입니다.
이 때 어떤 Context를 참조하는 지 생각해보면,

MyApplication : Application Context
MainActivity : Application Context , MainActivity Context
SubActivity : Application Context , SubActivity Context
이와 같습니다~!

참고
https://charlezz.medium.com/안드로이드의-context를-이해하고-메모리-누수를-방지하기-b092a09ef4ef

0개의 댓글