반응형
이전글 : 2019/10/16 - [프로그래밍/Android] - Android - WorkManager (2) WorkRequest
Work States
Android 상에서 사용되는 작업들은 그 작업이 시작 부터 완료 될 때까지 다양한 상태를 가집니다.
그 상태들은 다음과 같습니다.
- 아직 완료되지 않은 선행 작업이 있는 경우 작업은 'BLOCKED' 상태입니다.
- 제약 조건과 타이밍이 충족되는 즉시 실행할 수있는 작업은 'ENQUEUED'로 간주됩니다.
- Worker가 현재 실행 중이면 RUNNING 상태입니다.
- Worker가 Result.success ()를 반환하면 성공한 것으로 간주됩니다. 이것은 작업이 끝이난 상태입니다. OneTimeWorkRequests 만이 이 상태로 들어갈 수 있습니다.
- 반대로 Result.failure ()를 반환 한 Worker는 실패한 것으로 간주됩니다. 이것은 또한 작업이 끝이난 상태입니다. OneTimeWorkRequests 만이 이 상태로 들어갈 수 있습니다. 모든 종속 작업도 실패로 표시되며 실행되지 않습니다.
- 아직 종료되지 않은 WorkRequest를 명시 적으로 취소하면 CANCELLED 상태가됩니다. 모든 종속 작업도 CANCELLED 상태로로 표시되며 실행되지 않습니다
각 상태의 더 자세한 사항은 여기서 확인 하실 수 있습니다.
Observing your work
작업을 대기열에 넣은 후 WorkManager를 사용하여 작업 상태를 확인할 수 있습니다. 이 정보는 WorkInfo 개체에서 사용할 수 있으며 여기에는 작업 ID, 태그, 현재 상태 및 모든 출력 데이터가 포함됩니다.
그리고 이 WorkInfo를 얻는 방법은 3가지가 있습니다.
- 특정 WorkRequest의 경우 WorkManager.getWorkInfoById (UUID) 또는 WorkManager.getWorkInfoByIdLiveData (UUID)를 사용하여 WorkRequest ID로 WorkInfo를 검색 할 수 있습니다.
- 지정된 태그의 경우 WorkManager.getWorkInfosByTag (String) 또는 WorkManager.getWorkInfosByTagLiveData (String)를 사용하여 일치하는 모든 WorkRequest에 대한 WorkInfo 객체를 검색 할 수 있습니다.
- 고유 한 작업 이름의 경우 WorkManager.getWorkInfosForUniqueWork (String) 또는 WorkManager.getWorkInfosForUniqueWorkLiveData (String)를 사용하여 일치하는 모든 WorkRequests에 대한 WorkInfo 오브젝트를 검색 할 수 있습니다.
이 3가지 방법으로 WorkInfo를 확인 할 수 있고 각 메소드의 LiveData 변형을 사용하면 리스너를 등록하여 WorkInfo의 변경 사항을 관찰 할 수 있습니다.
그리고 이미 이전 글에서 이 방법을 사용했습니다.
WorkManager.getInstance(context!!).getWorkInfoByIdLiveData(myWorkRequest.id)
.observe(viewLifecycleOwner,
Observer { t ->
t?.let {
val outputData = it.outputData.getString("outputData")
if (outputData != null) {
Log.d("TEST", "outpudata : $outputData")
}
}
})
위의 code에서 t가 workInfo 입니다.
반응형
'2023년 이전 > Android' 카테고리의 다른 글
Android - WorkManager (5) - Chaining Work (0) | 2019.10.17 |
---|---|
Android - WorkManager (4) -Observing intermediate Worker progress (0) | 2019.10.17 |
Android - WorkManager (2) WorkRequest (0) | 2019.10.16 |
Android - WorkManager(1) (1) | 2019.10.16 |
Android -LiveData (0) | 2019.10.15 |