서비스 (Services)
타이머·배터리·네트워크·위치 — 화면 밖의 값으로 앱을 움직이기
3 min read
서비스(Service) 는 눈에 보이는 UI 가 아니라, 앱이 실행되는 동안 살아있는 값을 공급하는 기능입니다. 정해진 주기로 신호를 보내는 타이머, 이 기기의 배터리·네트워크 상태, 현재 위치 — 이런 값들이 서비스에서 나옵니다.
서비스 종류
- Timer — 지정한 간격으로(한 번 또는 반복) 발화합니다.
- Battery — 배터리 잔량·충전 상태. 권한이 필요 없습니다.
- Connectivity — 네트워크 연결 여부와 종류(Wi-Fi/셀룰러). 권한이 필요 없습니다.
- Location — 현재 위치(위도·경도·고도·속도 등). 사용자의 위치 권한을 요청합니다.
서비스는 프로젝트 전역 또는 특정 화면 소속으로 만들 수 있습니다. 화면 소속 서비스는 그 화면이 나타날 때 시작되고 사라질 때 멈춥니다.
발화하면 무슨 일이 일어나나
서비스가 발화(fire)할 때의 동작을 두 가지 중에서 고릅니다.
- Action Flow 실행 — 지정한 Action Flow 를 실행합니다. 측정값(Reading)은 플로우의 파라미터로 주입되어 액션에서 바로 사용할 수 있습니다.
- Data Binding — Action Flow 없이, 측정값의 필드를 프로젝트 데이터에 바로 기록합니다. 그 데이터에 바인딩된 라벨·맵 등이 즉시 갱신됩니다.
측정값의 구조는 서비스 종류별 Built-in 스키마(읽기 전용)로 제공되어, 데이터를 다루는 곳 어디서든 참조할 수 있습니다.
시작과 정지
- Auto Start — 앱(또는 소속 화면)이 시작될 때 자동으로 시작합니다.
- Action Flow 의 Service Start / Service Stop 액션으로 원하는 시점에 켜고 끌 수 있습니다.
- 서비스는 시작하는 즉시 현재 값으로 한 번 발화하므로, 첫 화면부터 값이 채워집니다.
1초 반복 타이머 + 현재 시각 기록 + 라벨 바인딩 — 세 가지면 시계 앱이 됩니다. Location 서비스의 측정값을 Map 에 바인딩하면 내 위치를 따라오는 지도가 됩니다.