| 방식 | 설명 | 사용 예시 | 현재 권장 여부 |
|---|---|---|---|
| Thread | 기본 자바 스레드, 단순 병렬 처리 | 간단한 계산, 파일 처리 | ⭕ |
| Coroutine | Kotlin 기반 경량 비동기 | 네트워크 통신, I/O, DB | ✅ 가장 많이 사용 |
| Handler / HandlerThread | 메시지 기반 작업 전달 | 특정 시점 작업 예약 | ⭕ |
| WorkManager | 조건 기반 반복/지연 작업 | 백업, 로그 업로드 등 | ✅ |
| JobScheduler | 시스템 리소스 고려 작업 예약 | API 21+ 백그라운드 처리 | ⭕ |
| ForegroundService | 사용자 인식 필요 작업 | 음악 재생, 위치 추적 | ✅ |
| UI + 백그라운드 연결 (과거 방식) | - | ❌ Deprecated | |
| 백그라운드 서비스 (과거 방식) | - | ❌ Deprecated | |
| AlarmManager | 특정 시각 알림, 예약 실행 | 알람 앱, 정각 알림 등 | ⭕ (시간 정확성 중요할 때) |
| 상황 | 추천 방식 |
|---|---|
| 짧고 즉시 처리할 작업 | Coroutine / Thread |
| 오래 걸리는 작업 + 앱 꺼져도 유지 | WorkManager |
| 사용자에게 작업이 인식되어야 함 | ForegroundService |
| 특정 시간에 실행 필요 | AlarmManager |
| 항목 | AlarmManager | WorkManager |
|---|---|---|
| 용도 | 특정 시점에 정확한 시간에 작업 실행 | 조건 만족 시 백그라운드 작업 실행 (지연 가능) |
| 시간 정확성 | 높음 (지정된 시각에 정확히 실행 가능) | 낮음 (시스템 최적화에 따라 지연 가능) |
| 앱 상태와 무관한 실행 | O (앱 종료, 재부팅 후에도 작동 가능) | O |
| 반복/조건 기반 작업 | 반복 가능하지만 조건 제어는 어려움 | 조건 기반 반복 작업에 적합 |
| API 제한 영향 | Android 6.0+ 이상에서도 백그라운드 실행 제한 적음 | 시스템 정책에 따라 지연 가능성 있음 |
| 대표 사용 예 | 알람, 캘린더, 정각 알림 | 주기적 백업, 로그 업로드, 대기 후 작업 |