728x90
반응형
WorkManager
- API 14 이상 모든 버전에서 동작
- Doze 모드에서도 실행 가능 (Android 6.0 이상)
- 자동으로 재시작 지원
- 딜레이 및 주기적 작업 가능
- Foreground Service 없이도 백그라운드 작업 가능
- 장기 실행 작업(데이터 동기화, 파일 업로드)에 적합한 솔루션
예제
WorkManager Gradle 설정
dependencies {
implementation "androidx.work:work-runtime:2.7.1"
}
Worker 클래스 생성
Worker를 상속받아 작업 정의
class SyncWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
override fun doWork(): Result {
Log.d("WorkManager", "데이터 동기화 실행 중...")
// 여기에 데이터 동기화 로직 추가
return Result.success() // 작업 성공
}
}
- doWork() 내부에 백그라운드 작업 구현
- Result.success(), Result.failure(), Result.retry() 변환 가능
Work 요청 및 실행
주기적으로 실행되는 Work 요청
val workRequest = PeriodicWorkRequestBuilder<SyncWorker>(15, TimeUnit.MINUTES)
.build()
WorkManager.getInstance(context).enqueue(workRequest)
- PeriodicWorkRequestBuilder<>로 반복 작업 설정 가능
- 최소 15분 주기로 실행 가능
WorkManager 옵션
- setInitialDelay(): 작업을 일정 시간 후에 시작
- setBackoffCriteria(): 실패 시 재시도 간격 설정
- setConstraints(): 네트워크 상태, 충전 여부 등 조건 설정 가능
네트워크 연결상태에서만 실행하도록 설정
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val workRequest = OneTimeWorkRequestBuilder<SyncWorker>()
.setConstraints(constraints)
.build()
- WorkManager는 네트워크 상태 등을 고려한 백그라운드 작업에 최적
- 백그라운드에서 지속적으로 실행되는 작업은 WorkManager를 활용
728x90
반응형
'안드로이드 학습(Kotlin)' 카테고리의 다른 글
DataStore란? (0) | 2025.02.11 |
---|---|
22. Foreground Service를 활용한 음악 재생 (1) | 2025.02.10 |
20. SufaceView를 사용한 MediaPlayer 사용 (0) | 2025.02.07 |
19. 브로드캐스트 사용 (알람 등록하기, 메시지 전달하기) (1) | 2025.02.07 |
18. Android의 주요 데이터 저장소 방식 (2) | 2025.02.07 |