본문 바로가기

Programming/Xamarin

Xamarin Android WorkManager 사용하기 백그라운드 작업 처리 예시

반응형

이 글은 Xamarin.Forms의 Android 프로젝트를 베이스로 하고 있다.

(Xamarin.Android를 사용하시는 분들도 크게 다를 것이 없을 것 같은 내용이지만 혹시 몰라 명시)

 

안드로이드 백그라운드 작업이 필요해 리뷰를 하다 보면 생각보다 알아야 할 것이 많다.

백그라운드 작업을 처리할 때 사용할 수 있는 것들이 어떤 것들이 있는지

그중 내 시나리오에 잘 맞는 건 어떤 것인지

그걸 자 마린이 지원하는지

기존에 백그라운드 작업을 한번 해봤었는데 AlarmManager와 broadCastReceiver를 사용해서 구현했었다.

하지만 AlarmManager의 문제점 관련 글을 보게 되었고 대안책인 JobScheduler를 찾았지만 이는 롤리팝(API 21) 이상에서만 지원하기 때문에 그 이하의 버전을 지원하는 앱이라면 버전에 따라 AlarmManager, JobScheduler를 각각 사용하도록 구현해야 한다.

(이마저도 킷캣에서 발생하는 문제는 여전히 남아있는 상태)

그렇게 더 리뷰하다가 찾은 것이 WorkManager이다.

2018 Google I/O에서 처음 공개되었고 내부적으로 API 버전을 체크해 AlarmManager와 JobScheduler를 사용한다.

또한 실행 보장, 장치의 상태 고려, 연결처리 등 다방면에서 보완이 되었다고 한다.

 

여기까지가 WorkManager 리뷰에 대한 간단한 정리이고 실제 사용법은 아래와 같다. 

ref : https://devblogs.microsoft.com/xamarin/getting-started-workmanager/

 

Getting Started With WorkManager | Xamarin Blog

WorkManager is a library that makes it easy to schedule deferrable, asynchronous tasks even if the app exits or the device restarts.

devblogs.microsoft.com

 

1.Xamarin.android.arch.work.runtime 패키지 설치

Xamarin.forms -> Android project에

Xamarin.Android -> 해당 프로젝트에 설치

 

2.Worker class 상속 및 구현

 

3.MainActivity에서 구현한 Worker기반으로 요청을 만들어 실행

Request 객체로 언제 어떻게 작업이 수행될지 수식하고

WorkManager.Instance.Enqueue에 넣어 등록한다.

끝.

+동작확인

로그를 남기고 로그캣 윈도우에서 작업 수행 여부 확인

반응형