애플리케이션을 백그라운드에서 동작시키기 위한 방법
소개
애플리케이션을 개발하다보면 대용량 파일 업로드/다운로드 주기적인 데이터 fetch 작업 등 애플리케이션에서 백그라운드로 동작을 해줘야하는 상황들이 있다. 이러한 백그라운드 프로세스 작업들의 경우 어떤 식으로 실행할 수 있으며 어떻게 유지할 수 있는지 iOS/Android 각각의 환경에서 알아본 내용이다.
안드로이드에서의 백그라운드 작업
안드로이드에서의 지속적인 작업은 WorkManager를 통해 처리가능하다. 대부분의 백그라운드 처리가 지속적 작업을 통해 수행되기 때문에 WorkManager는 일반적으로 백그라운드 처리를 위한 주요 권장 API로 사용된다.
지속적인 작업의 유형
WorkManager는 세 가지 유형의 지속적인 작업을 처리한다.
- 즉시(Immediate): 즉시 시작해서 곧 완료해야 하는 작업
- 오래 걸리는 작업(Long Running): 10분 이상 소요되는 작업
- 예약 작업(Deferrable): 나중에 시작되거나 주기적으로 실행되는 예약된 작업
아래 그림은 다양한 유형의 지속적 작업이 서로 어떻게 연관되어 있는지 간략히 설명한다.
지속적인 작업 유형(https://developer.android.com/develop/background-work/background-tasks/persistent)
마찬가지로, 다음 표에서는 다양한 유형의 작업을 간략히 설명한다.
| 유형 | 주기 | 접근방법 |
|---|---|---|
| 즉각적인 | 일회성 | OneTimeWorkRequest, Worker 사용, 즉시 처리해야할 경우 OneTimeWorkRequest에서 setExpedited() 호출 |
| 오래 걸리는 작업 | 한번 또는 주기적으로 | WorkRequest, Worker 사용, 알림 처리를 위해서는 setForeground() 호출 |
| 예약 작업 | 한번 또는 주기적으로 | PeriodicWorkRequest, Worker 사용 |
WorkManager를 설정하는 방법에 대한 자세한 내용은 WorkRequest 정의 가이드에서 확인할 수 있다.
