본문 바로가기
50 year old flutter developer challenge

[50살에 플러터 개발 도전기] 플러터에서 GPS 백그라운드 작업 구현: WorkManager, Background Fetch, Isolate를 사용한 경험

by Maccrey Coding 2025. 2. 3.
반응형

안녕하세요! 이번에는 설 연휴를 맞아 실제 기기에서 플러터 프로젝트를 테스트해보면서 느낀 점을 공유하려고 합니다.

주제는 바로 GPS 위치를 백그라운드에서 받아 Hive에 저장하는 코드 구현과 그 과정에서 사용한 Flutter 패키지들입니다.

이번에는 WorkManager, Background Fetch, 그리고 Isolate 세 가지를 사용했는데, 각 패키지의 장단점과 백그라운드 작업의 어려움에 대해 자세히 다뤄보겠습니다.

구독!! 공감과 댓글,

광고 클릭은 저에게 큰 힘이 됩니다.

 

1. WorkManager: 백그라운드 작업의 시작

플러터에서 백그라운드 작업을 처리하는 데 있어 가장 많이 사용되는 패키지 중 하나가 WorkManager입니다.

제가 처음 이 패키지를 접했을 때 가장 인상 깊었던 점은 간단한 설정으로 백그라운드 작업을 관리할 수 있다는 점이었습니다. WorkManager는 주기적인 작업이나 조건부 작업을 설정할 수 있어, GPS 데이터를 주기적으로 업데이트하는 데 매우 유용합니다.

 

장점

  • 쉬운 설정과 관리: 복잡한 코드 없이 간단히 설정할 수 있습니다.
  • 주기적인 작업 처리: 주기적으로 GPS 위치를 업데이트해야 할 때 유용합니다.
  • 조건부 작업 가능: 네트워크 연결이나 배터리 상태 등을 조건으로 작업을 수행할 수 있습니다.

단점

  • 실시간 작업에 한계: 실시간으로 위치를 추적하는 데는 다소 한계가 있습니다.
  • 기기의 상태에 따라 다르게 동작할 수 있음: 기기 종류나 OS 버전에 따라 동작이 달라질 수 있습니다.

2. Background Fetch: 주기적인 위치 업데이트

다음으로 사용한 패키지는 Background Fetch입니다. 이 패키지는 주기적으로 백그라운드에서 작업을 실행할 수 있게 도와줍니다. WorkManager와 비슷한 점도 있지만, Background Fetch는 백그라운드에서 작업을 실행하는 빈도나 조건을 더 세밀하게 설정할 수 있습니다.

 

장점

  • 주기적인 위치 추적에 적합: GPS 위치를 일정 주기로 업데이트하는 데 적합합니다.
  • 간단한 설정: 복잡한 설정 없이 쉽게 시작할 수 있습니다.
  • 강력한 유연성: 배터리나 네트워크 조건을 설정하여 작업의 빈도나 실행 시점을 제어할 수 있습니다.

단점

  • 배터리 소모: 주기적인 업데이트로 인해 배터리 소모가 늘어날 수 있습니다.
  • 제한된 작업 빈도: OS에 따라 주기적인 작업이 제한될 수 있습니다.

3. Isolate: 큰 계산 작업에 적합

마지막으로 Isolate는 백그라운드에서 병렬로 작업을 처리할 때 유용한 Flutter의 기능입니다.

이 패키지는 백그라운드 작업을 처리할 때 큰 계산이 필요한 경우에 적합합니다.

GPS 위치를 처리하는 데에는 필요 없지만, 복잡한 데이터 처리가 필요할 때 유용하게 사용할 수 있겠다는 생각이 들었습니다.

 

장점

  • 병렬 처리 가능: 복잡한 계산을 병렬로 처리할 수 있어 성능이 뛰어납니다.
  • 백그라운드에서 독립적인 작업 가능: 메인 스레드와 독립적으로 작업을 처리할 수 있습니다.

단점

  • 복잡한 설정: 다른 두 패키지에 비해 설정이 조금 복잡하고, 단순한 작업에는 오히려 불필요할 수 있습니다.
  • 메모리 관리 필요: 병렬 작업을 처리하기 위해 메모리 관리에 신경 써야 합니다.

4. 백그라운드 작업의 어려움과 도전

설 연휴 동안 직접 실기기에서 테스트를 진행하며, 백그라운드에서 GPS를 처리하는 것이 얼마나 어려운 일인지 몸소 느꼈습니다.

특히, 백그라운드 작업기기별로 다르게 동작하거나, OS 버전에 따라 처리 방식이 달라질 때 큰 어려움을 겪었습니다.

이러한 점에서 테스트의 중요성을 다시 한 번 깨달았습니다.

 

그리고 Isolate가 사실 백그라운드보다는 큰 계산을 처리하는 데 적합하다는 점도 알게 되었습니다.

이 패키지를 사용하려면 복잡한 데이터 처리 작업이 있을 때 사용하는 것이 좋고, GPS 위치 같은 간단한 작업에는 오히려 부담스러울 수 있겠다는 생각이 들었습니다.

5. 다시 시작하는 마음

여러 가지 문제에 봉착하면서 많은 것을 배워야 한다는 점을 실감했습니다.

그리고 설에 조금 느슨해진 마음을 다잡고, 다시 한 번 도전해야겠다는 결심을 하게 되었습니다.

목표를 향해 꾸준히 나아가면서 더 나은 Flutter 개발자가 되기 위한 여정을 계속 이어갈 것입니다.

 

백그라운드 작업을 처리하는 데 있어 WorkManager, Background Fetch, Isolate는 각각 장단점이 확실히 존재합니다.

실시간 GPS 위치 업데이트가 필요한 경우 WorkManagerBackground Fetch가 적합하며, Isolate는 대규모 계산 작업을 처리할 때 유리합니다.

앞으로도 다양한 Flutter 패키지를 실험하면서 더 나은 코드를 작성하기 위해 계속해서 도전할 것입니다.

구독!! 공감과 댓글,

광고 클릭은 저에게 큰 힘이 됩니다.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

반응형