https://dev-playground.tistory.com/25?category=1207507
[Android] Service 정리
Service 안드로이드 애플리케이션의 컴포넌트 중 하나로 UI를 제공하지 않아도(사용자와 상호작용 없음) 백그라운드에서 장기 실행되는 작업을 수행한다. Service가 시작되면 사용자
dev-playground.tistory.com
Service LifeCycle
안드로이드의 Service는 백그라운드에서 실행되는 컴포넌트로, 화면(UI)을 가지지 않고 오래 실행되는 작업(예: 음악 재생, 네트워크 요청, 위치 추적 등)을 처리하는 데 사용된다.
**Service의 생명주기(Lifecycle)**를 쉽게 설명하면 아래와 같다.
LifeCycle
1. onCreate()
- 서비스가 처음 생성될 때 호출됨 (한 번만 실행됨)
- 초기 설정을 여기서 하면 됨 (예: 리소스 초기화)
2. onStartCommand()
- startService()로 서비스가 시작되면 호출됨
- 여기서 백그라운드 작업을 시작할 수 있음
- return 값에 따라 서비스가 종료될지 계속 실행될지 결정됨
(START_STICKY, START_NOT_STICKY, START_REDELIVER_INTENT)
3. onBind()
- bindService()로 서비스가 바인딩될 때 호출됨
- 액티비티와 서비스 간 데이터 교환이 필요할 때 사용됨 (Messenger, AIDL 등)
- 바인딩 방식일 경우, onStartCommand()는 호출되지 않을 수도 있음
4. onUnbind()
- 바인딩된 컴포넌트(예: 액티비티)가 unbindService()를 호출하면 실행됨
- 서비스와 연결이 해제될 때 사용
5. onDestroy()
- 서비스가 종료될 때 호출됨 (stopService()나 stopSelf()로 종료)
- 리소스 정리, 쓰레드 중지 등 정리 작업을 하면 됨

정리
onCreate() → 처음 한 번 실행 (초기화)
onStartCommand() → startService()로 실행될 때마다 호출 (작업 시작)
onBind() → bindService()로 실행될 때 호출 (액티비티와 연결)
onUnbind() → 바인딩 해제될 때 호출
onDestroy() → 서비스가 종료될 때 호출 (리소스 정리)
즉, start 방식(독립 실행) vs **bind 방식(연결 실행)**에 따라 흐름이 달라진다.
어떤 방식으로 사용할지에 따라 생명주기 두개의 메소드를 활용할 수 있다.
'개발 > Android' 카테고리의 다른 글
| [Android] 화면 회전 시 onDestroy 안되도록 (0) | 2025.03.06 |
|---|---|
| [Android] View LifeCycle 정리 (0) | 2025.03.04 |
| [Android] Fragment LifeCycle 쉽게 정리 (0) | 2025.03.02 |
| [Android] Activity 생명주기 쉽게 이해하자 (0) | 2025.02.28 |
| [Android] 안드로이드 4대 컴포넌트(Component) (0) | 2025.02.28 |