본문 바로가기
개발/Android

[Android] Service – 2. 기본 콜백 함수

by Dev Aaron 2020. 11. 8.
반응형

본 포스팅은 Android Service에 존재하는 콜백 함수 중 일부 중요한 것들을 소개하며 공식 문서를 참고하여 작성되었습니다.

Service 역시 Activity와 마찬가지로 독자적인 라이프사이클이 존재합니다. (언뜻 보면 UI가 없는 Activity와도 같죠.)

https://developer.android.com/guide/components/services#LifecycleCallbacks

동작하는 생명 주기를 바탕으로 Service는 크게 2가지 나눠볼 수 있습니다.

  • Started Service (그림에서 왼쪽)
  • Bound Service (그림에서 오른쪽)

Service는 onCreate로 시작하여 onDestroy로 끝난 다는 점에서 Activity와 동일합니다. 여기에 추가로 Started, Bound에 따라 불리는 콜백 함수가 달라집니다. Started Service는 onStartCommand함수를 구현하면 되고, Bound Service는 onBind함수를 구현하면 됩니다. 혹은 둘 다 지원해야 한다면 둘 다 구현해주면 됩니다.

onCreate()

Activity에서와 마찬가지로 Service가 처음 생성되었을 때 불리는 콜백함수입니다. 최초 한번 불리기 때문에 일회적으로 초기 설정들을 세팅해주면 됩니다.

onDestroy()

Activity에서와 마찬가지로 Service가 소멸될 때 불립니다. Service를 수행하면서 사용한 각종 리소스를 여기서 정리합니다.

onStartCommand()

startService(), startForegroundService() 함수를 통해 Service를 시작했을 때 불리는 콜백 함수입니다. 시작된 Service는 다시 명시적으로 종료되어야 하는데요. Service 내부에서 stopSelf() 함수를 호출하여 종료하거나, 해당 Service를 시작시킨 컴포넌트에서 stopService() 함수를 호출하여 종료시켜 주면 됩니다.

onBind()

다른 컴포넌트가 bindService() 함수를 통해 Service에 바인딩할 경우 불리는 콜백 함수입니다. onBind() 함수의 return type은 IBinder로서 바인딩한 컴포넌트와 통신하기 위해 사용되는 인터페이스입니다. 만약 onBind() 함수에서 null을 반환하도록 구현하면 바인딩을 허용하지 않겠다는 의미가 됩니다. 바인딩한 컴포넌트에서 더이상 Service를 사용하지 않는다면 unbind를 해주어야 합니다. 이는 unbindService() 함수를 호출하면 됩니다.

반응형