본문 바로가기
개발/Android

[Android] Service LifeCycle 쉽게!

by 1인용 놀이터 2025. 3. 4.
728x90
반응형

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 방식(연결 실행)**에 따라 흐름이 달라진다.
어떤 방식으로 사용할지에 따라 생명주기 두개의 메소드를 활용할 수 있다.

728x90
반응형