Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

WorkManager로 작업 예약  Android Jetpack의 일부

WorkManager지연 가능한 비동기 작업을 쉽게 예약할 수 있는 API로, 지연 가능한 비동기 작업은 앱이 종료되거나 기기가 다시 시작되더라도 실행될 것으로 예상되는 작업입니다. WorkManager API는 FirebaseJobDispatcher, GcmNetworkManager, JobScheduler를 비롯하여 모든 이전 Android 백그라운드 예약 API를 대체한다는 점에서 적합하고 권장되는 API입니다. WorkManager는 API 수준 14와 역호환되는 일관된 최신 API에 이전 기능을 통합하면서 배터리 수명도 개선합니다.

내부적으로 WorkManager에서는 다음 기준에 따라 기본 작업 전달 서비스를 사용합니다.

기기가 API 수준 23 이상에서 실행되면 JobScheduler가 사용됩니다. API 수준 14~22에서는 가능한 경우 GcmNetworkManager가 사용되고 그 외에는 맞춤 AlarmManager 및 BroadcastReciever 구현이 대체로 사용됩니다.

참고: 앱에서 Android 10(API 수준 29) 이상을 타겟팅하는 경우 FirebaseJobDispatcher 및 GcmNetworkManager API 호출이 Android Marshmallow(6.0) 이상을 실행하는 기기에서 더 이상 작동하지 않습니다. 이전 안내는 FirebaseJobDispatcherGcmNetworkManager의 이전 가이드를 참고하세요. 또한 지원 중단과 관련된 자세한 내용은 Android에서 백그라운드 작업 예약 통합 공지를 참고하세요.

기능

더 간단하고 일관된 API를 제공할 뿐만 아니라 WorkManager는 다음을 비롯한 여러 중요한 이점이 있습니다.

작업 제약조건

작업 제약조건을 사용하여 작업이 실행되는 최적의 조건을 선언적으로 정의합니다. 예를 들어 기기가 Wi-Fi에 연결되어 있거나, 유휴 상태이거나, 저장공간이 충분한 경우에만 작업이 실행됩니다.

강력한 예약 관리

WorkManager를 사용하면 가변 예약 기간을 통해 한 번 또는 반복적으로 실행할 작업을 예약할 수 있습니다. 작업에 태그 및 이름을 지정하여 고유 작업 및 대체 가능한 작업을 예약하고 작업 그룹을 모니터링하거나 취소할 수 있습니다. 예약된 작업은 내부적으로 관리되는 SQLite 데이터베이스에 저장되며 WorkManager에서 기기를 재부팅해도 작업이 유지되고 다시 예약되도록 보장합니다. 또한 WorkManager는 잠자기 모드와 같은 절전 기능과 권장사항을 준수하므로 배터리를 걱정할 필요가 없습니다.

유연한 재시도 정책

경우에 따라 작업에 실패하기도 합니다. WorkManager에서는 구성 가능한 지수 백오프 정책을 비롯해 유연한 재시도 정책을 제공합니다.

작업 체이닝

복잡한 관련 작업의 경우 유연하고 자연스러운 인터페이스를 사용하여 개별 작업을 함께 체이닝하면 순차적으로 실행할 작업과 동시에 실행할 작업을 제어할 수 있습니다.

Kotlin


WorkManager.getInstance(...)
    .beginWith(listOf(workA,workB))
    .then(workC)
    .enqueue()

자바


WorkManager.getInstance(...)
    .beginWith(Arrays.asList(workA, workB))
    .then(workC)
    .enqueue();

각 작업의 경우 작업의 입력 및 출력 데이터를 정의할 수 있습니다. 작업을 함께 체이닝하면 WorkManager에서 자동으로 한 작업의 출력 데이터를 다음 작업으로 전달합니다.

내장 스레딩 상호 운용성

WorkManager에서는 RxJava코루틴원활하게 통합되며 자체 비동기 API를 연결할 수 있는 유연성을 제공합니다.

지연 가능하고 안정적인 작업을 위해 WorkManager 사용

WorkManager는 앱이 종료되거나 기기가 다시 시작되더라도 지연 가능(즉시 실행될 필요가 없음)하고 안정적으로 실행되어야 하는 작업을 대상으로 설계되었습니다. 예:

  • 백엔드 서비스에 로그 또는 분석을 전송
  • 주기적으로 애플리케이션 데이터를 서버와 동기화

WorkManager는 앱 프로세스가 사라지더라도 안전하게 종료할 수 있는 진행 중인 백그라운드 작업 또는 즉시 실행해야 하는 작업을 대상으로 하지 않습니다. 적합한 솔루션을 알아보려면 백그라운드 처리 가이드를 검토하세요.

시작하기

앱에서 WorkManager를 사용하려면 시작 가이드를 확인하세요.

추가 리소스

동영상

블로그