
사용자 편의를 위해 백그라운드 작업을 구현해야 할 일이 생겨서, 백그라운드에 대해 다시 찬찬히 살펴보는중!
기능을 구현하고 나서 글을 쓰려니까 기억도 안나고 캡쳐하기도 불편하고 해서 요번엔 하나씩 천천히 글을 쓰면서 정리해볼까 한다.
일단 공식 문서에 친절하게도 어떤 때에 어떤 방법을 택하는게 좋을지 가이드를 알려주고 있었음!
Android 백그라운드 작업 개요 - 사용자가 시작한 작업
내가 구현하고자 하는건 사용자가 트리거하는 오래 걸릴지도 모르는(장담할수 없는) 작업이었기 때문에 여기부터 시작!

요렇게 생긴 친절한 그림이 있는데... 한글로 새로 만들어서 들고와보도록 하겠습니다!

짠!
(공식문서 요약정리를 짧게 덧붙였으나 이 사진만으로는 부족하니 한번 훑어보시고 꼬옥 공식문서 읽어주시기,,,)
고심해서 WorkManager와 ForegroundService 두가지로 선택지를 좁혔다.

(제가 만들었어요! 공식문서에서 찾으실까봐 말씀드립니다🥹)
일단 내가 정한 태스크 시나리오는 사용자가 엑셀 파일을 불러오면, 그 엑셀 파일을 분석한다.
그래서 이것도 비교정리 해보고... 구현시 고려할만한 점에 초록칠을 해봤다.
워크 매니저의 작업 지속성 특징(앱 종료시 작업 재시도)이 사실 이렇게 듣기에는 좋아보이는데, 엑셀 파일을 읽다가 갑자기 앱이 종료되었는데 그걸 사용자 선택 없이 재개할만큼 중요한 작업인지는... 잘 모르겠다!
(애초에 태스크 시작 트리거가 사용자의 선택이니까...?)
그리고 태스크 진행상황을 UI로 계속 사용자에게 알려주는것. 분석이 끝나고 나면 노티피케이션 등을 눌러 다시 업로드 선택 화면으로 돌아와줘야 한다.
UI 연계가 꽤나 중요한 고려 요소였기 때문에 포그라운드 서비스가 조금 더 적합하지 않을까, 하는 생각!
그래서 일단은 포그라운드 서비스를 통해 기능을 구현하기로 했다!