workmanager

    [JETPACK개론] WorkManager(5) + 주기적작업, 고유작업

    [JETPACK개론] WorkManager(5) + 주기적작업, 고유작업

    주기적작업 경우에 따라 앱에서 특정 작업을 주기적으로 실행해야 할 수 있다. 예를 들어 주기적으로 데이터를 백업하거나 최신 컨텐츠를 앱에 다운로드 하거나 로그를 서버에 업로드해야 할 수 있다. 이 때 주기적으로 실행되는 WorkManager를 만들 수 있다. class WorkManager1(context : Context, workerParameters: WorkerParameters) : Worker(context, workerParameters){ override fun doWork(): Result { Log.d("WorkManager1", "doWork") val format = SimpleDateFormat("hh:mm:ss") val currentTime = format.format(Date..

    [JETPACK개론] WorkManager(4) + 작업진행률 관찰

    [JETPACK개론] WorkManager(4) + 작업진행률 관찰

    WorkManager는 앞서 포스팅했던 내용 이외에도 getWorkInfoByLiveData메소드 중 하나를 사용하여 현재 작업 진행률 정보를 관찰할 수도 있다. CoroutineWorker 객체의 setProgress함수를 사용하여 진행률 정보를 업데이트 할 수 있다. 공식문서를 봐도 getWorkInfoBy..() 또는 getWorkInfoByLiveData() 메소드 중 하나를 사용하여 정보를 관찰할 수 있고 이 메소드는 Data를 반환하는 새 getProgress() 메소드가 있는 WorkInfo의 인스턴스를 반환한다고 나와있다!! 다음 예시를 살펴보자! class WorkManagerTest(context : Context, params : WorkerParameters) : CoroutineW..

    [JETPACK개론] WorkManager(3) + Chaining, Coroutine

    [JETPACK개론] WorkManager(3) + Chaining, Coroutine

    WorkManager Chaining WorkManager의 첫 글에서 작업순서를 정해주기도 한다고 하였다. 예를 들어 작업 A, B, C가 있다고 가정해보자. A, B 는 순서 상관 없이 실행되도 괜찮지만 C는 무조건 A / B가 모두 실행된 뒤에 실행되어야 한다고 한다면 작업순서를 정해줄 수 있어야 한다. 다음과 같은 WorkManager를 B, C까지 만들어주자. class WorkManagerA(context : Context, workerParameters: WorkerParameters) : Worker(context, workerParameters) { override fun doWork(): Result { for(i in 0..3){ sleep(1000) Log.d("WorkManager..

    [JETPACK개론] WorkManager(2) + Sending, Receiver Data

    [JETPACK개론] WorkManager(2) + Sending, Receiver Data

    WorkManager에 대해서는 전 게시물에서 다뤄봤다. 다시 정리하자면, 앱이 종료되거나 다시 시작되어도 비동기 작업을 쉽게 예약할 수 있게 해준다. 안드로이드의 백그라운드 작업을 처리하는 방법 중 하나이며 지금 공부하고 있는 JetPack의 구성 요소 중 하나이다. 전 게시물에서는 WorkManager 간단한 실습을 통해 어떻게 다뤄지는지 알아봤고 이번 글에서는 Worker와 데이터를 주고받는 실습을 해볼 것이다!! 먼저 MainActiviy에서 WorkManager로 전달할 데이터를 다음과 같이 정해준다. val myData : Data = workDataOf( "a" to 10, "b" to 20 ) val workManagerB = OneTimeWorkRequestBuilder().setInpu..

    [JETPACK개론] WorkManager(1)

    [JETPACK개론] WorkManager(1)

    WorkManager는 공식문서를 확인해보면 지속적인 작업에 권장되는 솔루션이라고 나온다. 앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지된다고 설명하고 있다. 이렇게 공식문서만 살펴보면 이해가 잘 안되는 경우가 있다. 사용자가 앱을 나가도 오래 걸리는 작업같은 경우에는 앱을 나가버리면 보통 그 작업이 멈춰버린다. 이 때 WorkManager를 사용할 수 있다. 이렇기 때문에 지속적인 작업에 권장되는 솔루션이라고 하는 것이다. 또한 WorkManager는 코루틴을 지원하고, 작업 순서 설정이 가능하다. 예를 들어 A, B작업은 첫 번째로 실행되는 두 번째로 실행되는 상관이 없지만 C라는 작업은 꼭 세 번째에 실행되어야 한다고 가정하였을 때 이 때 작업 순서를 정..