투케이2K

572. (Android/안드로이드) WorkManager 설명 및 소스 코드 참고 사이트 정리 본문

Android

572. (Android/안드로이드) WorkManager 설명 및 소스 코드 참고 사이트 정리

투케이2K 2023. 6. 10. 11:57

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

 

============================================================
[참고 사이트 주소]
============================================================

1. 안드로이드 공식 사이트 WorkManager 설명 

    https://developer.android.com/jetpack/androidx/releases/work?hl=ko


2. 안드로이드 공식 사이트 WorkManager 의존성 부여 및 사용 방법

    https://developer.android.com/topic/libraries/architecture/workmanager/basics?hl=ko


3. 안드로이드 공식 사이트 WorkManager 메소드 종류

    https://developer.android.com/reference/androidx/work/WorkManager


4. WorkManager 소스 코드 참고 예시 사이트

   https://www.tabnine.com/code/java/classes/androidx.work.WorkManager





============================================================
[WorkManager 기능 요약 설명]
============================================================

1. WorkManager 는 Android 10 (API 수준 29) 이상을 타겟팅하는 경우에서 백그라운드 작업을 수행할 때 권장되는 솔루션입니다


2. WorkManager 는 FirebaseJobDispatcher, GcmNetworkManager, Job Scheduler 를 비롯하여 이전의 모든 Android 백그라운드 작업을 대체할 때 권장되는 솔루션입니다


3. WorkManager 는 네트워크 상태, 배터리 상태 등에 따라 자동 수행할 수 있게 트리거 설정을 할 수 있습니다


4. WorkManager 는 싱글톤으로 구현이 되어있기 때문에 getInstance() 로 WorkManager 의 인스턴스를 받아 사용 합니다


5. WorkManager 작업 유형

  - 즉시 : 즉시 시작하고 곧 완료해야 하는 작업
    * 주기성 : 1회
    * 사용 방법 : OneTimeWorkRequest 사용


  - 장기 실행 : 오래 (10분 이상이 될 수 있음) 실행될 수 있는 작업
    * 주기성 : 1회 또는 주기적
    * 사용 방법 : 모든 WorkRequest 또는 Worker에서 setForeground() 를 호출하여 알림을 처리


  - 지연 가능 : 나중에 시작하며 주기적으로 실행될 수 있는 예약된 작업
    * 주기성 : 1회 또는 주기적
    * 사용 방법 : PeriodicWorkRequest 사용


6. WorkManager 관련 추가 설명

  - WorkManager : 처리해야 하는 작업을 자신의 큐에 넣고 관리

  - Worker : 추상 클래스이며, 처리해야 하는 백그라운드 작업의 코드를 doWork() 메서드에 작성

  - WorkRequest : WorkManager 를 통해 실제 요청하게 될 개별 작업 / 처리해야 할 작업인 Work 와 작업 반복 여부 및 작업 실행 조건, 제약 사항등 이 작업을 어떻게 처리할 것인지에 대한 정보가 담김

  - WorkState : WorkRequst 의 id 와 해당 WorkRequest 의 현재 상태를 확인 / ENQUEUED, RUNNING, SUCCEEDED, FAILED, BLOCKED, CANCLLED 의 6개 상태






============================================================
[build.gradle 의존성 부여 참고]
============================================================

    // -----------------------------------------------------------

    // [Android WorkManager 의존성 부여]
    def work_version = "2.8.0" // [CompileSdk / targetSdk : 33]
    //def work_version = "2.7.0" // [CompileSdk / targetSdk : 31]
    
    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"

    // -----------------------------------------------------------

 


 

반응형
Comments