백그라운드 데이터 처리는 사용자의 기대에 부응하고 사용자에게 도움이 되는 Android 애플리케이션을 개발하는 데 있어 중요한 부분입니다. 이 가이드에서는 백그라운드 작업 카테고리를 정의하고, 작업을 분류하는 기준을 제공하며, 이를 실행하는 데 사용해야 하는 API를 추천합니다.
기본 원칙
일반적으로, 몇 밀리초 이상 걸리는 작업은 백그라운드 스레드에 위임해야 합니다. 일반적인 장기 실행 작업에는 비트맵 디코딩, 저장소 액세스, 머신러닝(ML) 모델 작업, 네트워크 요청 실행 등이 포함됩니다.
백그라운드 작업의 카테고리
백그라운드 작업은 다음 기본 카테고리 중 하나에 속합니다.
- 즉시
- 지연
- 정시
작업을 분류하려면 다음 질문에 답하고 그림 1에서 이에 대응하는 결정 트리를 순회합니다.
- 사용자가 애플리케이션과 상호작용하는 동안 작업을 완료해야 하나요?
- 그렇다면, 이 작업은 즉시 실행으로 분류되어야 합니다. 그렇지 않은 경우 두 번째 질문으로 넘어갑니다.
- 작업이 정확한 시간에 실행되어야 하나요?
- 작업을 정확한 시간에 실행해야 한다면, 작업을 정시로 분류합니다.
대부분의 작업은 정확한 시간에 실행할 필요가 없습니다. 작업은 일반적으로 네트워크 가용성 및 배터리 잔량과 같은 조건을 기반으로 실행 시 약간의 편차를 허용합니다. 정확한 시간에 실행할 필요가 없는 작업은 지연으로 분류해야 합니다.

추천 해결 방법
다음 섹션에서는 각 백그라운드 작업 유형에 추천하는 해결 방법을 설명합니다.
즉시 실행해야 하는 작업
사용자가 특정 범위를 벗어나거나 상호작용을 완료할 때 종료해야 하는 작업에는 Kotlin 코루틴을 사용하는 것이 좋습니다.
여러 Android KTX 라이브러리에는 ViewModel
및 일반적인 애플리케이션 수명 주기와 같은 일반적인 앱 구성요소에 바로 사용할 수 있는 코루틴 범위가 포함되어 있습니다.
자바 프로그래밍 언어 사용자는 Android의 스레딩에서 권장 옵션을 확인하세요.
사용자가 애플리케이션을 백그라운드로 전환하거나 기기를 다시 시작하더라도 즉시 실행해야 하며 지속적인 처리가 필요한 작업의 경우 WorkManager
와 장기 실행 작업 지원 기능을 사용하는 것이 좋습니다.
미디어 재생 또는 활성 탐색과 같은 특정한 경우에는 포그라운드 서비스를 직접 사용하는 것이 좋습니다.
지연된 작업
사용자 상호작용에 직접 연결되지 않고 향후 언제든지 실행할 수 있는 모든 작업은 지연될 수 있습니다. 지연된 작업에 추천하는 해결 방법은 WorkManager
입니다.
WorkManager
를 사용하면 앱이 종료되거나 기기가 다시 시작되더라도 지연될 수 있는 비동기 작업을 쉽게 예약할 수 있습니다. 이러한 유형의 작업을 예약하는 방법은 WorkManager
문서를 참고하세요.
정시에 실행해야 하는 작업
정확한 시점에 실행해야 하는 작업에는 AlarmManager
를 사용할 수 있습니다.
AlarmManager
에 관해 자세히 알아보려면 반복 알람 예약을 참고하세요.