이 글은 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/
1.Xamarin.android.arch.work.runtime 패키지 설치
Xamarin.forms -> Android project에
Xamarin.Android -> 해당 프로젝트에 설치
2.Worker class 상속 및 구현
3.MainActivity에서 구현한 Worker기반으로 요청을 만들어 실행
Request 객체로 언제 어떻게 작업이 수행될지 수식하고
WorkManager.Instance.Enqueue에 넣어 등록한다.
끝.
+동작확인
로그를 남기고 로그캣 윈도우에서 작업 수행 여부 확인