제이슨의 개발이야기

안드로이드 Context 란? 본문

안드로이드

안드로이드 Context 란?

제이쓰은 2022. 11. 19. 21:21
728x90
반응형

안녕하세요

오늘은 안드로이드 Context가 무엇인지 공부하려고 합니다!!

 

Context 란??

 

Context 란 어플리케이션 현재 상태의 맥락을 의미합니다

Context는 생성된 객체가 어떤 일이 일어나고 있는지 알 수 있습니다

Context 는 리소스. 데이터베이스, preferences 등에 시스템 자원에 대한 접근을 제공하고 뿐만 아니라

 

Activity 시작, Intent 수신과 브로드캐스팅 등의 Application 수준 작업의 호출이 가능하다.\

Context는 Android 시스템에서 구현을 제공하는 추상 클래스이고 Application 과 Activity는 Context를 확장한 서브 클래스 입니다

따라서 액티비티와 애플리케이션에 대한 정보를 얻기 위해서는 컨텍스트를 사용하고 여러 리소스 등의 접근을 제공합니다

 

Context 종류

 

안드로이드에는 여러 Context 종류가 있습니다

 

1. Application Context

Application Context 는 싱글턴 인스턴스이며 액티비티에서 getApplicationContext()를 통해 접근할 수 있습니다. 이 컨텍스트는 애플리케이션의 라이프사이클과 연결되어 있습니다. Application Context는 현재의 context 와 분리된 라이프사이클을 가진 context가 필요할 때나 액티비티의 범위를 넘어서 context를 전달할 떄에 사용합니다.

 

Application Context의 특징으로 1 . Singleton Instance -> 앱이 죽기 전까지 동일한 객체 반환2. 어떤 Context 보다 오래 유지됩니다3. Application 라이프 사이클에 귀속됨

 

 

2. Activity Context

 

Activity Context는 Activity 에서 사용 가능한 Context이다  이 Context는 Activity의 생명 주기에 묶인다 Activity 범위 내에서 Context를 전달하거나 현재 Context에 생명주기가 엮여 있는 Context가 필요한 경우에만 사용한다

 

 

Context는 언제 사용하나? 

 

우리는 Application Context 와 Activity Context 를 언제 사용해야 할까요?

 

예시로 데이터베이스를 관장하는 AppDatabase 라는 클래스를 싱글턴으로 생성한다고 가정했을 때 AppDatabase가 초기화시 Context가 필요할 수 있다 이땐 어플리케이션이 실행 동안 싱글턴이 존재해야 하기 때문에 

Activity Context가 아니라 Application Context를 참조해야 합니다 

Activity Context는 Activity 의 생명주기에 따라 소멸될 수 있기 때문입니다!

 

반대로 어떤 화면에서 버튼 클릭 시 Dialog를 띄우고 싶을 때는 Activity Context 를 참조해야 합니다 

Application Context는 Activity Context가 지원하는 모든 것을 지원하지 않기 때문에 GUI 관련된 모든 것은 Activity Context를 참조해야 합니다 

 

Memory leak

 

개발을 하면서 다양한 라이브러리를 사용하는 경우가 많은대 그때 Context 를 참조하는 경우가 많습니다

이때 Context를 아무렇게 참조하게 되면 Memory leak 이 일어납니다

 

Memory leak을 필하기 위해서 Activity Context에는 수명이 긴 참조를 피하고 ,  되도록이면 Application Context를 사용해야합니다

그래서 앱개발에 사용되는 많은 라이브러리들이 초기화에 Context가 필요한데 이때 Application Context을 일반적으로 요구하는 이유입니다! 

GUI 관련 은 Activity Context를 참조하고 왠만하면 다 Application Context를 참조한다고 생각하면 좋을거같습니다!

 

 

728x90
반응형