Service란?

thsamajiki·2023년 5월 14일
0

Service

목록 보기
1/1

Service는 Activity가 종료되어 있는 상태에서도 동작하기 위해서 만들어진 컴포넌트다.
앱이 종료되어도 서비스는 백그라운드에서 계속 실행된다.
만약 Service가 실행되고 있는 상태라면, 안드로이드 OS 에서는 해당 Process를 왠만하면 죽이지 않도록 방지하고 관리한다.
그렇기 때문에 메모리 부족이나, 특별한 경우를 제외하고는 Background 동작을 수행하도록 설계 되었다.
모든 컴포넌트(Activity, Service, Broadcast Receiver, Contents Provider)는 Main Thread(UI 작업을 처리해주는 Thread) 안에서 실행된다.



서비스 구현 방법

startService

startService() 함수를 호출해서 서비스를 시작하면, 시작 타입의 서비스가 실행된다. 시작 타입의 서비스는 한 번 시작되면, 백그라운드에서 무한정 실행되지만, 보통의 경우는 일 처리를 다 완료하면 서비스가 종료된다. 시작 타입의 서비스는 호출한 곳에 결과값을 반환하지 않고 계속해서 서비스한다. (음악 재생, 파일 다운로드 등)

하나의 프로세스안에서 동작하며, 패키지 내 컴포넌트들과 유기적으로 통신하는 역할

boundService

bindService() 함수를 통해서 서비스하면, 연결 타입의 서비스가 실행된다. 연결 타입의 서비스는 서버-클라이언트 형식의 구조를 취하기 때문에 호출자(Activity)에서 서비스에게 어떤 것을 요청하고 서비스는 그 요청을 처리한 후 결과값을 반환한다. 이러한 구조 때문에 Activity가 사라지면, 서비스도 자동적으로 destroy되면서 없어진다. 또 하나의 서비스에 여러 개의 Activity가 붙을 수 있다.

다른 프로세스들 간에서도 통신이 유기적으로 가능.

intentService

일반 Service와 다르게 요청이 끝나면, 자동으로 서비스가 종료, 또 다른 서비스들과 다르게 onHandleIntent() 함수 하나만을 통해 작업을 처리할 수 있다.

profile
안드로이드 개발자

0개의 댓글