[Android] Context

Twaun·2022년 6월 28일
0

Android

목록 보기
19/24

What is Context?

"앱이 흘러가는 맥락"
== "어플리케이션, 액티비티의 현재 상태 정보"를 의미한다고 볼수 있다.

안드로이드 시스템 서비스에서 제공하는 API(Shared Preferences, Toast, Resource, DB(Room)) 등 context를 필요로 한다.

How to use?

Application Context 와 Activity Context 두 가지가 존재한다. 이 두 가지를 잘 구분해서 사용할 필요가 있다. Context를 올바르게 사용하지 못하면 메모리 누수가 발생하게 되므로 주의해서 사용할 필요가 있다.

1. Application Context

: 어플리케이션 전역에 컬쳐 사용이 가능한 context 이다.

앱은 기본적으로 하나의 Application 에 하나 이상의 Activity로 구성이 된다. Activity는 한 화면에 하나만 존재할 수 있지만 Application은 앱이 실행되고 완전히 꺼지기 전까지 유지되고 Application을 상속한 Application 과 각 Activity는 Application Context 사용이 가능하고 이는 중간에 바뀌거나 새로 생성되지 않는다.

올바른 사용

각 Activity에 종속되지 않는, 싱글 인스턴스 형태의 클래스로 소멸될 일이 없는 context가 필요시 될때 Application Context를 사용한다.

잘못된 사용

Toast, Dialog 등 View와 관련된 동작에 context가 필요할 때는 적합하지 않다. view는 Activity 라이프사이클에 포함되어야 한다.
또한, application context를 사용한 객체가 사용된 이후에도 메모리가 해제되지않고 쌓여 메모리 릭을 발생할 가능성이 높다.

2. Activity Context

: 각 Activity 마다 갖고 있는 context 이다.

하나의 화면에 하나의 Actvity가 존재할 수 있고, 현재의 Actvity가 다른 Activity로 이동하기도 한다. 이때 마다 현재의 Activity의 정보를 담고있는 context가 생성되고 소멸된다.

올바른 사용

Activity 라이프사이클을 따르는 객체, View와 관련된 UI 동작에 Activity Context를 사용한다.

잘못된 사용

앱 전역에 사용되는 싱글톤 객체에 사용하게 되면 존재하지 않는 context를 사용하게 됨으로써 에러를 발생하게 된다.

정리

Application Context : 앱 전역에 사용되는 싱글톤 객체
Activity Context : 액티비티 라이프사이클에 종속되는 UI와 같은 객체

profile
Android Developer

0개의 댓글