Android

Android Context 비교

Machine_웅 2025. 4. 4. 11:07
728x90
반응형

아래 표는 Android에서 사용되는 다양한 Context 유형에 대한 용도와 특징을 비교한 것입니다.

Context 유형 생성 시점 소멸 시점 주요 용도 및 특징 사용 예시

Application Context 앱 시작 시 (Application 객체 생성 시) 앱 종료 시 - 앱 전역에서 사용 가능- 장시간 유지 가능- Activity 관련 UI 작업 불가 getApplicationContext()
Activity Context Activity의 onCreate() Activity의 onDestroy() - UI 관련 작업 가능- 특정 Activity에 종속됨- Activity 종료 시 소멸 this 또는 getBaseContext()
Service Context Service의 onCreate() Service의 onDestroy() - 백그라운드 작업 수행 가능- UI 작업 불가 this
BroadcastReceiver Context onReceive() 호출 시 onReceive() 종료 시 - 짧은 시간 동안만 존재- 장시간 보관하면 메모리 누수 발생 가능 context.startActivity(intent)
ContentProvider Context onCreate()에서 사용 가능 앱 종료 시 - 데이터베이스 접근 가능- ContentResolver 사용 가능 getContext()

추가 설명

  1. Application Context는 앱 전반에서 공유되며 메모리 누수를 방지하는 데 유용합니다. 하지만 UI 관련 작업에는 적합하지 않습니다.
  2. Activity Context는 UI와 직접 관련되므로 Toast, Dialog, startActivity() 등에서 자주 사용됩니다. 그러나 Activity가 소멸하면 Context도 함께 사라지므로 장시간 보관하면 메모리 누수가 발생할 수 있습니다.
  3. Service Context는 백그라운드에서 실행되는 작업에 적합합니다. UI 요소와 직접 연결되지 않으므로, Toast 같은 UI 요소를 띄울 때는 Handler나 Looper를 사용해야 합니다.
  4. BroadcastReceiver Context는 onReceive() 메서드에서만 유효합니다. 비동기 작업을 수행해야 하는 경우에는 Application Context를 사용하거나, Foreground Service를 이용하는 것이 좋습니다.
  5. ContentProvider Context는 데이터베이스를 관리할 때 주로 사용되며, 다른 앱과 데이터를 공유할 수 있습니다.

Context 사용 시 주의할 점

  • Activity Context를 장시간 저장하면 메모리 누수가 발생할 수 있음 → 필요하면 Application Context 사용
  • BroadcastReceiver의 Context는 짧게 유지해야 함 → 오래 유지할 필요가 있다면 Application Context 사용
  • UI 작업에는 Activity Context 사용, Service나 Application Context 사용 시 UI 관련 기능 제한됨

 

728x90
반응형