[Android] Context에 대하여

ddanglehee·2023년 3월 16일
0

안드로이드

목록 보기
2/2

📌 Android에서 Context란?

말 그대로 애플리케이션의 맥락(context), 즉 현재 상태를 의미한다.
Context 클래스는 추상 클래스로 되어있고, Application, Activity, Service는 이 Context를 상속받아 Context의 기능들을 이용한다.

🧐 그래서 context로 뭘 할 수 있는데?
1. Application과 Activity의 정보를 얻을 수 있다.
2. Resource, Database, SharedPreferences 등의 시스템 자원을 얻을 수 있다.
3. Activity 실행, Intent 브로드캐스팅, Intent 수신 등과 같은 응용 프로그램 수준의 작업을 수행하기 위한 API를 호출할 수 있다.

Android에서 context를 Application contextActivity context로 나눌 수 있다.
상황에 따라서 이를 적절히 사용해야 애플리케이션의 메모리 누수를 막을 수 있으니 제대로 알고 사용하자😉

📍 Application Context

  • Activity에서 getApplicationContext()를 통해 접근할 수 있으며, singleton 인스턴스이다.
  • Application의 라이프사이클과 연결되어 있다.
    따라서 그 어떤 context보다 오래 유지된다.
  • 언제 사용할까?
    1. 현재의 context와 분리된 라이프사이클을 가진 context가 필요할 때
    2. Activity의 범위를 넘어서 context를 전달해야할 때
    3. 싱글톤 인스턴스에서 참조해야할 때
    🚨 주의할 점 🚨
    -> Application context가 필요할 때 Activity context를 사용하게 되면 메모리 누수가 발생한다.
    Activity context가 Activity에 대한 참조를 계속 유지하기 때문에 Activity가 가비지 콜렉터에 의해 수집되지 않기 때문이다.

📍 Activity Context

  • Activity 내에서 사용 가능한 context이다.
  • Activity의 라이프사이클과 연결되어 있다.
  • 언제 사용할까?
    1. 현재 context에 라이프사이클이 엮여있는 context가 필요할 때
    2. Activity 범위 내에서 context를 전달할 때
    3. GUI와 관련된(Dialog, Toast 등) 모든 것에 context가 필요할 때
profile
잊고싶지 않은 것들을 기록해요✏️

0개의 댓글