[Android] - 서비스란 뭘까?

명준쓰·2023년 6월 19일
0

안녕하세요 오늘은 안드로이드 4대 컴포넌트 중 하나인 Service에 대해서 포스팅 해보겠습니다.

4대 컴포넌트는 Activity, Service, BroadCast Receiver, Content Provider로 이루어져 있습니다.

각각의 고유의 기능을 가지고 있고 저는 그중 백그라운드에서 사용되는 Service에 적어보겠습니다.

Service란

서비스는 주로 백그라운드에서 오랫동안 실행되는 작업을 수행하는 데 사용됩니다. 서비스는 사용자 인터페이스를 갖지 않고 사용자와 상호작용 하지 않으며 백그라운드에서 실행됩니다.(다른 컴포넌트와 상호작용은 가능)

사용 이유

서비스는 주로 네트워크 작업, 파일 다운로드, 데이터 동기화, 데이터베이스 관리, 백그라운드 음악 재생 등과 같은 오랜 시간이 걸리는 작업을 처리하기 위해 사용됩니다. 위에 나열한 작업들은 주로 앱의 사용자 인터페이스와 독립적으로 실행되어야 하기 때문에 서비스를 활용합니다.

유형

1.Foreground Service(전면 서비스) : 사용자에게 직접적인 알림을 표시하고, 중요한 작업을 수행하는 서비스 입니다. 사용자가 앱을 종료해도 계속 실행되며, 사용자와 상호작용이 필요한 작업을 처리할 수 있습니다.

2.Background Service(백그라운드 서비스) : 사용자에게 직접적인 알림을 표시하지 않고 백그라운드에서 실행되는 서비스입니다. 주로 네트워크 작업이나 데이터 동기화와 같은 작업을 처리합니다.

3.Bound Service(바운드 서비스) : 다른 컴포넌트와 바인딩하여 상호작용하는 서비스입니다.
다른 컴포넌트에서 바운드 서비스에 연결하여 데이터를 주고받거나 메서드를 호출할 수 있습니다.
예를 들어, 음악 재생 앱에서 재생 컨트롤을 위해 MediaPlayer와 바인딩된 서비스를 사용할 수 있습니다.

LifeCycle

Service도 Activity와 마찬가지로 lifecycle을 가지며, lifecycle 콜백 메서드가 있습니다.

service를 실행시킬 수 있는 방법은 2가지로, startService() 또는 bindService()를 호출하는 방법이 있습니다. 호출되는 방법에 따라 lifeCycle또한 차이가 있습니다.

startService()

  1. onCreate(): 서비스가 처음 생성될 때 호출되는 메서드입니다. 초기화 작업이나 리소스 할당 등을 수행합니다.
  2. onStartCommand(): startService() 메서드를 호출하여 서비스가 시작될 때 호출되는 메서드입니다. 이 메서드는 인텐트를 통해 전달된 작업에 대한 처리를 시작하고, 결과에 따라 서비스의 동작을 결정할 수 있습니다. 일반적으로 백그라운드 작업이나 네트워크 요청 등을 수행합니다.
  3. Service running: 서비스는 백그라운드에서 실행 중이며, 필요에 따라서 다른 작업을 수행할 수 있습니다.
  4. onDestroy(): 서비스가 종료될 때 호출되는 메서드입니다. 리소스 해제나 정리 작업을 수행합니다.

bindService()

  1. onCreate() : 서비스가 처음 생성될 때 호출되는 메서드입니다. 초기화 작업이나 리소스 할당 등을 수행합니다.
  2. onBind() : bindService() 메서드를 호출하여 서비스와 바인딩 될 때 호출되는 메서드입니다. 이 메서드에서는 다른 컴포넌트와의 인터페이스를 제공하기 위한 IBinder 객체를 반환합니다.
  3. Clients are bound to service : 서비스와 클라이언트가 바인딩되었으며, 클라이언트는 서비스의 메서드를 호출하거나 데이터를 주고받을 수 있습니다.
  4. onUnbind() : 다른 컴포넌트와의 바인딩이 해제될 때 호출되는 메서드입니다. 바인딩된 상태에서 해제될 때 어떤 동작을 수행할지 정의할 수 있습니다.
  5. onDestroy() : 서비스가 종료될 때 호출되는 메서드입니다. 리소스 해제나 정리 작업을 수행합니다.

서비스는 이러한 라이프사이클 메서드를 통해 초기화, 실행, 작업 처리, 종료 등의 동작을 수행하며, 이를 활용하여 앱의 백그라운드 작업이나 상호작용을 구현할 수 있습니다.


https://developer.android.com/guide/components/services?hl=ko

profile
개린이

0개의 댓글