Android WorkManager 완벽 가이드 - 백그라운드 작업의 정석

✨ 개요

WorkManager는 Jetpack 라이브러리 중 하나로, 안정적이고 지연 가능한 백그라운드 작업을 처리하기 위한 솔루션입니다.

앱이 종료되거나 기기가 재부팅되더라도 작업을 자동으로 재시도하거나 보장된 방식으로 실행해주는 것이 특징입니다.


1. 🧪 주요 특징


2. ✅ 사용 방법

2.1 의존성 추가

implementation "androidx.work:work-runtime-ktx:2.10.1"

2.2 MyWork 클래스

import android.content.Context
import android.util.Log
import androidx.work.Worker
import androidx.work.WorkerParameters

class MyWorker(appContext: Context, params: WorkerParameters) : Worker(appContext, params) {

    override fun doWork(): Result {
        // 작업 수행
        Log.d(MyWorker::class.java.simpleName, "작업 실행됨!")
        return Result.success()
    }
}

2.3 호출방법

// WorkRequest 생성 & 작업 예약
val workRequest = OneTimeWorkRequestBuilder<MyWorker>().build()
WorkManager.getInstance(this).enqueue(workRequest)

// 반복 작업 (주기적) 최소 15분 이상 간격만 가능
val periodicWork = PeriodicWorkRequestBuilder<MyWorker>(15, TimeUnit.MINUTES).build()
WorkManager.getInstance(this)
    .enqueueUniquePeriodicWork("my_work", ExistingPeriodicWorkPolicy.KEEP, periodicWork)

// 제약 조건 설정
val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .setRequiresCharging(true)
    .build()

val work = OneTimeWorkRequestBuilder<MyWorker>()
    .setConstraints(constraints)
    .build()

// 작업 체이닝
val work1 = OneTimeWorkRequestBuilder<MyWorker>().build()
val work2 = OneTimeWorkRequestBuilder<MyWorker>().build()

WorkManager.getInstance(this)
    .beginWith(work1)
    .then(work2)
    .enqueue()

3. ⚠️ 주의사항


4. 🧾 결론



Related Posts