본문 바로가기

Android

안드로이드 4대 컴포넌트 중 Service란?

728x90

Service

백그라운드에서 실행되는 컴포넌트로, 화면을 구성하는 레이아웃을 작성할 필요가 없다. 이러한 이유로, 지속적으로 장시간 동작해야하는 기능인 경우 서비스에 구현해야 한다. 서비스로 동작하게 하고 싶다면 Service 클래스를 상속한 후, 생명주기 메소드를 재정의해서 원하는 기능을 구현하면 된다.

일반적으로 쓰레드를 이용해 백그라운드 작업을 하다가 사용자의 이벤트 또는 어떠한 이유로 인해 (예: Back press로 액티비티가 종료되고 앱 프로세스의 우선순위가 낮아짐) 프로세스가 종료될 수 있습니다. 이 경우 쓰레드도 함께 종료됩니다.

 

컴포넌트 : 활성 상태의 액티비티, 브로드 캐스트 리시버, onStart, onCreate, onDestroy를 실행하는 서비스

 

프로세스 우선순위

1. 활성 프로세스(Foreground) : 사용자가 상호 작용하는 컴포넌트를 가진 프로세스

 

2. 가시 프로세스(Visible) : 포그라운드 컴포넌트를 가지지 않지만 사용자의 화면에 보이는 상태입니다. 

 

3. 시작된 백그라운드 서비스 : 사용자와 직접 상호 작용하지 않는 서비스

 

4. 백그라운드 프로세스(Background) : 종료되지 않았지만 화면에 보이지 않는 액티비티 또는 활성화된 컴포넌트가 없는 프로세스입니다. 

 

우선순위가 낮을수록 포어그라운드 프로세스에 필요한 리소스 확보를 위해 가장 우선적으로 종료됩니다.

 

서비스는 앱에서 1개의 인스턴스만 생기므로 싱글톤 패턴을 구현하지 않아도 괜찮습니다.

 

Service Life Cycle

서비스는 Unbounded service(시작, 종료만 관여)와 Bounded service(연결 유지와 데이터 교환)로 구분됩니다.

유튜브 영상 등의 재생화면을 보이지않게 하더라도 재생되어 소리만 듣는 경우 Unbound에 해당

유튜브 영상 등의 재생화면을 직접 보면서 눈으로 볼 수 있는 경우 Bound에 해당

 

서비스 생명주기 

Unbounded Service 

onCreate() : 서비스가 생성될 때 호출됩니다.

onStart(): startService() 메소드에 의해 서비스가 시작될 때 마다 호출됩니다.

onDestroy() : 서비스가 종료될 때 호출

 

Bounded serice

onCreate(): 서비스가 생성될 때 호출됩니다.

onBind(): bindService() 메소드에 의해 서비스가 시작될 때 호출됩니다.

onUnbind(): 서비스와 연결이 끊겼을 때 호출됩니다.
onDestory(): 서비스가 종료될 때 호출됩니다.

 

brunch.co.kr/@mystoryg/93

 

안드로이드 서비스(Service)

4대 컴포넌트 | 안드로이드 서비스 서비스는 백그라운드에서 동작하는 작업을 수행한다. 따라서 서비스를 실행한 앱을 다른 앱으로 전환하더라도 서비스에서 시작한 작업은 백그라운드에서 계

brunch.co.kr