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() |
추가 설명
- Application Context는 앱 전반에서 공유되며 메모리 누수를 방지하는 데 유용합니다. 하지만 UI 관련 작업에는 적합하지 않습니다.
- Activity Context는 UI와 직접 관련되므로 Toast, Dialog, startActivity() 등에서 자주 사용됩니다. 그러나 Activity가 소멸하면 Context도 함께 사라지므로 장시간 보관하면 메모리 누수가 발생할 수 있습니다.
- Service Context는 백그라운드에서 실행되는 작업에 적합합니다. UI 요소와 직접 연결되지 않으므로, Toast 같은 UI 요소를 띄울 때는 Handler나 Looper를 사용해야 합니다.
- BroadcastReceiver Context는 onReceive() 메서드에서만 유효합니다. 비동기 작업을 수행해야 하는 경우에는 Application Context를 사용하거나, Foreground Service를 이용하는 것이 좋습니다.
- ContentProvider Context는 데이터베이스를 관리할 때 주로 사용되며, 다른 앱과 데이터를 공유할 수 있습니다.
Context 사용 시 주의할 점
- Activity Context를 장시간 저장하면 메모리 누수가 발생할 수 있음 → 필요하면 Application Context 사용
- BroadcastReceiver의 Context는 짧게 유지해야 함 → 오래 유지할 필요가 있다면 Application Context 사용
- UI 작업에는 Activity Context 사용, Service나 Application Context 사용 시 UI 관련 기능 제한됨
728x90
반응형
'Android' 카테고리의 다른 글
BLE ) isConnectable (0) | 2025.03.13 |
---|---|
ExpandableListView 사용법 (작성중 ) (0) | 2025.02.19 |
외부 경로에 디렉토리 생성 (펌) (0) | 2024.12.12 |
[Android 빌드 에러 ] figlib 관련 (0) | 2024.11.07 |
Android 모듈 만들기 / 라이브러리 만들기 (0) | 2024.09.04 |