티스토리 뷰

 

Context

Context란 어플리케이션 현재 상태의 맥락(Context)을 의미합니다.Context는 생성된 객체가 어떤 일이 일어나고 있는지 알 수 있습니다.

애플리케이션 컨텍스트(Application Context)

애플리케이션 컨텍스트는 싱글턴 인스턴스이며 액티비티에서 getApplicationContext()를 통해 접근할 수 있습니다. 이 컨텍스트는 애플리케이션의 라이프사이클과 연결되어 있습니다

액티비티에서 라이브러리를 초기화해야 하는 경우, 액티비티 컨텍스트가 아닌 애플리케이션 컨텍스트를 전달해야합니다.

그 어떤 컨텍스트(Context)보다 오래 유지되는 컨텍스트(Context)가 필요할때에만 getApplicationContext()를 사용합니다

액티비티 컨텍스트(Activity Context)

액티비티 컨텍스트는 액티비티에서 사용 가능하며 이 컨텍스트는 액티비티의 라이프사이클과 연결되어 있습니다. 액티비티의 범위 내에서 컨텍스트를 전달하거나, 라이프사이클이 현재의 컨텍스트에 붙은 컨텍스트가 필요할 때액티비티 컨텍스트를 사용합니다.

예시: 라이프사이클이 액티비티에 붙은 객체를 생성해야 할 때 액티비티 컨텍스트를 사용할 수 있습니다.

ContentProvider에서의 getContext()

이 컨텍스트는 애플리케이션 컨텍스트이며 애플리케이션 컨텍스트와 비슷하게 쓰일 수 있습니다. 이는 getContext() 메소드로 접근할 수 있습니다.

메모리 누수 방지

메모리 누수를 피하기 위해 Activity Context에는 수명이 긴 참조를 피하고, 되도록이면 Application Context를 사용해야 합니다. 예를 들면 AppDatabase의 경우, Activity Context를 참조했을 때 Activity는 어느 시점에서 소멸되지만, AppDatabase는 싱글톤이므로 해당 Activity Context를 지속적으로 참조하고 있게되어 메모리 누수를 일으킵니다.   하지만 Application Context를 무조건 사용하는 것은 옳지 않습니다. GUI 작업 등에서는 Activity Context가 필요한 경우가 존재하기 때문입니다. (Dialog, Toast 등등..)

'Android > Andorid 면접 질문 대비' 카테고리의 다른 글

RecyclerView VS ListView  (0) 2022.09.27
Android-4대 컴포넌트  (0) 2022.09.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함